2014-07-08 130 views
0

我有一个简单的消息传递系统,现在这些消息应按主题分组。所以表如下:SQL Group by columns

id | sender | recipient | subject 
------------------------------------ 
    1 | 16 |  17 | Hello 
    2 | 17 |  16 | Hello 
    3 | 12 |  16 | Hello 

“sender”和“recipient”是用户表中的id。

因此,用户将看到按主题分组的消息,这很容易通过GROUP BY进行分组。

问题是,邮件也被分组,具有相同的主题,但其他发件人和收件人。如果发件人和收件人相同,是否可以对邮件进行分组?在这个例子中,消息1和2应该分组,但不是3.所以我需要跨2列进行分组。

+0

一)你尝试过什么?; B)我想用一个字符串主题和关于分组是注定要失败 - 考虑一下 - 许多主题可能是相同的,你应该使用一个整数并为每个新线程分配一个新号码,祝你好运 – user3741598

+0

我尝试了分组消息,但messagas具有相同的主题,但其他参与者分组在一起。但是现在我使用另一种解决方案:我创建了一个父表“conversations”,将消息分配给一个对话,这使得它更容易处理消息系统 – user3817440

回答

0

也许......我“米不知道我理解的问题完全呢。

Select A.ID, A.Sender, A.Recipient, A.Subject 
FROM tableName A 
LEFT JOIN tableName B 
    on A.Sender=B.Recipient 
AND A.Subject=B.Subject 
Where Sender.ID = USERLOGGEDIN OR B.Recipient = USERLOGGEDIN 
ORDER By Subject, ID 
+0

我正在测试这个,但我认为这是一个gr吃基础,谢谢!我认为你在Where子句中犯了一个错误,你的意思是:“Where A.Sender = USERLOGGEDIN [...]”? – user3817440