2011-06-16 79 views
0

我想爲PHP/MySQL中的郵件系統製作對話概述頁面。基本上,它看起來像iPhone的文本/短信概述頁面。由您發送或收到消息的其他用戶分組的消息。它應該顯示最新的消息對話(發送或接收)第一(降序)需要合併兩列,所以我可以GROUP BY在同一個表

messages table 

id | sender_id | receiver_id | datetime | message 

這是查詢我到目前爲止:

SELECT id, sender_id, receiver_id, max(datetime) AS dt, 
SUBSTRING_INDEX(GROUP_CONCAT(CAST(message AS CHAR) 
ORDER BY datetime DESC) , ',', 1) AS message 
FROM vc_messages 
WHERE (
sender_id = '1' 
OR receiver_id = '1' 
) 
GROUP BY sender_id, receiver_id 

與查詢的問題是它不'GROUP BY另一個用戶。如果我向其他用戶發送了一條消息,它會在Convo概覽結果中顯示兩次。基本上,我需要GROUP BY sender_id和receiver_id字段。

回答

0

所以,如果我理解正確,當你發送一條消息時,列sender_id和receiver_id將被切換爲發送給你的消息進行比較?你需要同一組內的兩種情況?

我沒有任何語法,但可以沿着GROUP BY MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)嘗試一些東西,這樣無論發送者和接收者是否被切換,這兩種情況都會導致相同的組合。

+0

這會返回一個錯誤:#1064 - 您的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在'receiver_id',MAX(sender_id,receiver_id)附近使用正確的語法。 – SomeRandomDude 2011-06-20 02:03:35

相關問題