嘗試執行查詢將消息分組爲對話時遇到了一些問題。 因此,具有相同發送者和接收者的消息將處於相同的對話中。 也會有小組對話,這意味着兩個人和兩個人一起說話四個。按高級方式分組
我的數據庫表看起來像這樣:
表:messages
+----+------+----+---------+---------+
| id | from | to | group_1 | group_2 |
+----+------+----+---------+---------+
| 1 | 1 | 2 | 0 | 0 |
| 2 | 2 | 1 | 0 | 0 |
| 3 | 1 | 0 | 1 | 2 |
| 4 | 2 | 0 | 2 | 1 |
| 5 | 3 | 0 | 1 | 2 |
| 6 | 4 | 0 | 2 | 1 |
| 7 | 4 | 1 | 0 | 0 |
| 8 | 1 | 4 | 0 | 0 |
+----+------+----+---------+---------+
我曾嘗試用下面的,但後來我得到的所有消息出來,所以我需要做一團,讓他們堅持一行而不是多行進行相同的對話。
SELECT * FROM messages
所以基本上什麼是需要做的,是自由以下:
- 組行通話情況:from
和to
與其他行等於,而group_1
和group_2
= 0但還應該基團的那些行,其中to
是與其它行from
相等,並且周圍的其他方法,但仍而group_1
和group_2
= 0(如在上面的表中的2個第一行)
- 組行對話,其中group_1
和group_2
與其他行相等,而to
= 0,以及其中group_1
與其他行group_2
相等,反之亦然,但仍然爲to
= 0(與id爲3和4的行相同)
所以基本上它應該將所有羣組之間正在交談的消息以及用戶在哪裏交談。
編輯
更好的解釋group_1
和group_2
group_1
和group_2
製成,這樣我可以把一個用戶組內,並能夠與另一組交談一組。
因此,不是使用to
和from
,而是使用group_1
和group_2
。 它應該像用戶對話(其中定義了from
和)一樣對組對話進行分組。
當to = 0
時,您可以看到一行是一個組。當to != 0
,那麼它不是一個組。
它應該與組別group_1
和group_2
一樣,就像用戶一樣。
非常感謝。對於團隊的解釋抱歉,我編輯了我的問題,以便更好地解釋它。另一件事,我會試着跟你查詢,但它可以變成一個查詢,而不是2? – 2013-04-25 12:27:36
這樣的事情? http://sqlfiddle.com/#!2/8f1ec/17 – dezza 2013-04-25 18:57:03