2010-02-26 61 views
0

我想通過命令讓我的頭與組,通常我試圖選擇一個用戶的所有消息,按主題分組,然後顯示他們 - 就像臉書是如何做的它。Facebook消息結果集像

結果應該包含最新的消息ID,發件人的ID,日期以及該主題中消息的總數。

消息表可以如下所示:

 
message 
------- 
id 
sender_id 
subject 
created_at 

所以結果應該是在相同主題分組的所有用戶的郵件。

+1

有關少量用戶和消息的消息表中的數據集示例,請您提供您想要返回的結果集示例?目前我還不清楚這些應該如何在理想輸出中組合在一起 – 2010-03-02 19:32:50

回答

1
SELECT sender_ID, subject, MAX(id), MAX(created_at), COUNT (id) 
FROM message 
WHERE recipient_id = current_user_id OR sender_id = current_user_id 
GROUP BY subject, sender_ID, receipient_id 
ORDER BY MAX(created_at) DESC 

與GROUP BY,任何不是在GROUP BY子句必須在聚合函數(例如COUNT,SUM,MAX等)在SELECT語句。

編輯 - 意識到上面的Group並不完全符合我的想法(雖然示例結果集會有所幫助),所以有人認爲可以簡化它。在創建消息時,您可以設置額外的列值 - conversation_id。當一個新消息被創建並被重新用於任何回覆時,這將被分配給一個新值。然後,您可以通過conversation_id按照我認爲您希望他們成爲的方式對消息進行分組。

+0

您可能希望按「sender_ID主題排序」 – TheSteve0 2010-02-28 07:44:44

+0

好點,更新 – 2010-02-28 09:12:12

+0

球員,按發件人ID排序不會列出從最新到最舊的消息。 ..?它需要通過created_at排序,因此它會按日期順序顯示消息否? – David 2010-03-01 06:07:50