Есть таблица UserMessages:
id sendFromUserId sendToUserId messageText messageStatus sendDateTimeStamp DateTimeStamp
1 1 16 hello, bla bla bla 0 2013-01-29 17:56:39 2013-01-29 17:56:17
2 1 16 hello, test 0 2013-01-29 17:56:17 2013-01-29 17:56:39
3 1 16 test выаываыв 0 2013-01-29 17:59:09 2013-01-29 17:59:09
4 1 16 abc 0 2013-01-29 17:59:36 2013-01-29 17:59:36
5 1 16 test 123 0 2013-01-29 20:22:33 2013-01-29 18:44:48
6 16 1 test 234 0 2013-01-29 18:44:48 2013-01-29 20:22:34
8 1 17 hi! test! 0 2013-01-29 20:22:34 2013-01-29 20:22:34
И таблица UserMessageDialogs:
id userId dialogWithUserId
1 1 16
2 1 17
Нужно выбрать последне сообщение от юзера по дате, делаю так:
SELECT *
FROM UserMessageDialogs
JOIN UserMessages ON
(UserMessageDialogs.userId=UserMessages.sendToUserId AND UserMessageDialogs.dialogWithUserId=UserMessages.sendFromUserId)
OR
(UserMessageDialogs.userId=UserMessages.sendFromUserId AND UserMessageDialogs.dialogWithUserId=UserMessages.sendToUserId)
WHERE userId=1
ORDER BY sendDateTimeStamp DESC
Получаю:
id userId dialogWithUserId id sendFromUserId sendToUserId messageText messageStatus sendDateTimeStamp DateTimeStamp
2 1 17 8 1 17 hi! test! 0 2013-01-29 20:22:34 2013-01-29 20:22:34
1 1 16 5 1 16 test 123 0 2013-01-29 20:22:33 2013-01-29 18:44:48
1 1 16 6 16 1 test 234 0 2013-01-29 18:44:48 2013-01-29 20:22:34
1 1 16 4 1 16 abc 0 2013-01-29 17:59:36 2013-01-29 17:59:36
1 1 16 3 1 16 test выаываыв 0 2013-01-29 17:59:09 2013-01-29 17:59:09
1 1 16 1 1 16 hello, bla bla bla 0 2013-01-29 17:56:39 2013-01-29 17:56:17
1 1 16 2 1 16 hello, test 0 2013-01-29 17:56:17 2013-01-29 17:56:39
Но нужно только получить последнее сообщение от каждого юзера.
Спасибо!