2010-02-26 64 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