對話包含消息,一條消息可以發送給2個或更多用戶。MYSQL - 獲取用戶的最後消息MAX(時間)
目標是通過用戶每個對話來檢索過去的消息,因此其中每個會話的信息是最新的。
另外message_user.time
是當用戶已經讀取消息,所以當它等於0這意味着消息還沒有被讀取,所以它會更好,如果第一個訂單將是message_user時間等於0和message.time是最大的數字。
我得到了這些表
消息用戶
user message time
-----|------------|-------
7 | 1 | 0
8 | 1 | 0
7 | 2 | 300
8 | 2 | 300
7 | 3 | 400
消息
id text conversation time
---|-------------|--------------|----------
1 | blah blah1 | 1 | 200
2 | blah blah2 | 1 | 300
3 | blah blah3 | 2 | 400
4 | blah blah4 | 2 | 500
的目標是小組交談的消息,然後獲得鏈接到最後message_user首先有較大時間戳的對話。
我想這是什麼,但我沒有得到最後消息(順序錯誤)
SELECT m.user, mu.message, mu.time, mu.id, m.text, m.time as message_time, m.conversation
FROM message_user as mu,message as m
WHERE mu.message=m.id AND mu.user=8
GROUP BY m.conversation
ORDER BY m.time DESC';
那麼下一步將是: 我不知道這是否是可能的,但是,如果可以輸出message_user,其中時間等於0第一次,然後第二次是message.time(我甚至不知道在一個請求中是否可能完美!)
對於用戶8輸出應該是這樣的:
text conversation
-----------|------------
blah blah1 | 1 //because message_user.time = 0 (means message is unread)
blah blah3 | 2 //because message.time is the highest in the conversation
謝謝!
這是一個奇怪的看着時間.... – Flukey
是它爲例子) –
可不可以給有關表結構的一些解釋嗎?我的意思是,如果每封郵件只有一個發件人並且只有一個收件人,那麼郵件用戶表的目標是什麼? 「對話」究竟是什麼? – raina77ow