2014-07-08 131 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