Страницы

Поиск по вопросам

четверг, 21 февраля 2019 г.

Личные сообщения. Вывод диалогов

Есть 2 таблицы.
[users]
- id - name
[prmess]
- id - date - from_id - to_id - text - view (boolean) 1/0
Собственно с выводом данных конкретного диалога/добавлением сообщений и т.п. проблем нет. Возникает проблема с выводом списка диалогов. То есть сообщения от меня к пете, и от пети ко мне это один диалог, а как составить запрос таким образом? более того нужно как-то суммировать непрочитанные сообщения (view) в этом диалоге только от собеседника (исключая свои). На выходе должно получиться что то вроде:
Собеседник [Петя], непрочитанных сообщений [2], id собесед.=2 Собеседник [Вася], непрочитанных сообщений [5], id собесед.=3 Собеседник [Женя], непрочитанных сообщений [0], id собесед.=4 Собеседник [Коля], непрочитанных сообщений [1], id собесед.=5


Ответ

select name,sum(not_view) msg_cnt,int_id from ( select if(from_id=1,to_id,from_id) int_id, 1-view not_view from prmess where from_id=1 or to_id=1 ) A join users2 on id=int_id group by int_id

Комментариев нет:

Отправить комментарий