У меня есть 1 таблица с диалогами (в запросе не участвует):
`user_dialogue`
id | name
1 | Первый диалог
2 | Второй диалог
У нас есть таблица с участниками диалога (предположим, мы id_user = 1, т.е. состоим в 2 диалогах):
`user_dialogue_members`
id | id_user | id_dialogue
1 | 1 | 1
2 | 5 | 1
3 | 1 | 2
4 | 15 | 2
...
У нас есть таблица непосредственно с сообщениями:
`user_dialogue_messages`
id | id_user | message | id_dialogue
1 | 1 | Привет, как дела ? | 1
2 | 5 | Нормально | 1
3 | 1 | Привет, привет | 2
...
В результате мы должны получить вывод диалогов (поскольку мы id_user = 1):
- Нормально (от 5 участника)
- Привет, привет (наше сообщение)
В общем последнее сообщение каждого диалога, не важно, написали его нам или мы.
Следующий запрос у меня работает не корректно, диалоги группирует, но выводит не последние сообщения из диалога, а первые:
SELECT *
FROM `user_dialogue_members` AS `members`
LEFT JOIN `user_dialogue_messages` AS `messages`
ON `members`.`id_dialogue` = `messages`.`id_dialogue`
WHERE `members`.`id_user` = :id_user
GROUP BY `messages`.`id_dialogue`
ORDER BY `messages`.`id` DESC
Как сделать группировку по последним сообщениям ? Надеюсь задача ясна. Помогите разобраться.
_____________
если помог, не скупись на карму =)