在我的應用中,「消息線程」被定義爲兩個或多個用戶之間的所有消息,並且不是嵌套的。它需要像Facebook消息一樣工作。SQL - 需要一個查詢來獲取用戶所屬的每個線程中的最新消息
我需要一個查詢,生成一個用戶所屬的所有「消息線程」的列表,按照最近活動的線程降序排列。結果是一個不同線程的表,其中每行包含threadID,postDate和messageBody。
這裏是我的架構:
MessageThreads(線程ID,lastPostDate)
MessageThreadUsers(threadFK,userFK)
消息(MESSAGEID,threadFK,senderFK,踵,消息體)
用戶(userID,userName,userEmail,...)
要開始w ith,這個查詢給我所有來自用戶所在線程的消息:
SELECT * FROM MessageThreadUsers
JOIN Messages ON MessageThreadUsers.threadFK = Messages.threadFK
WHERE MessageThreadUsers.userFK = 'usr_developer'
ORDER BY messageDate DESC
但是我怎樣才能得到最新的?我想我會使用MAX(messageDate)函數,但是如何在JOIN中工作?我將如何爲每個線程提供消息數據的單行?
這將有助於很多,如果你可以發佈你的答案TSQL,但任何幫助表示讚賞。謝謝!
我在想,限制結果集將完成最後一組線程,因爲我在MAX()會給我最新的帖子的頁面結果。但是,這個答案並沒有涉及到問題的核心問題,即:我如何只將來自線程的最新消息連接到線程列表中? – Redtopia 2012-03-29 13:41:02