В моем приложении «ветка сообщений» определяется как все сообщения между двумя или более пользователями и не является вложенной.Он должен работать как сообщения Facebook.
Мне нужен запрос, который генерирует список всех «цепочек сообщений», в которых пользователь является участником, отсортированный по темам с самой последней активностью по убыванию.Результатом является таблица отдельных потоков, где каждая строка содержит идентификаторы потоков, postDate и messageBody.
Вот моя схема:
MessageThreads (threadID, lastPostDate)
MessageThreadUsers (threadFK, userFK)
Сообщения (messageID, threadFK, senderFK, postDate, messageBody)
Пользователи (userID, userName, userEmail, ...)
Для начала, этот запрос дает мне все сообщения из всех потоков, в которых находится пользователь:
SELECT * FROM MessageThreadUsers
JOIN Messages ON MessageThreadUsers.threadFK = Messages.threadFK
WHERE MessageThreadUsers.userFK = 'usr_developer'
ORDER BY messageDate DESC
Но как мне получить только самые последние?Я думаю, что я бы использовал функцию MAX (messageDate), но как это работает в JOIN, как это?И как бы я вытащил одну строку с данными сообщения для каждого потока?
Было бы очень полезно, если бы вы могли опубликовать свой ответ в TSQL, но любая помощь приветствуется.Спасибо!