環境PHP 5.3.5 phpMyAdmin的3.3.9查詢顯示只有每個線程的最新消息
Here's an link of the issue in sqlfiddle
力圖打造,它通過用戶的留言活動過濾器的查詢。該活動將根據最近添加的消息顯示最新的線程。所以我必須考慮用戶是收件人還是發件人。
我有一個查詢結構,但我很難分組的線程。當我將這些線程分組時,最近活動的順序會丟失。
以下是查詢和結果,它捕獲最後10條消息的正確順序,但存在重複的thread_ids。我只想根據消息發送日期顯示最近的線程。
SQL查詢:
SELECT m.date_sent, m.thread_id, m.message_id, m.sender_id,
upub2.firstname as sender_name, mr.recipient_id,
upub1.firstname as recipient_name
FROM message AS m
JOIN message_recipient AS mr ON mr.message_id = m.message_id
JOIN user_public_info AS upub1 ON upub1.user_public_info_id = mr.recipient_id
join user_public_info AS upub2 ON upub2.user_public_info_id = m.sender_id
WHERE ((m.senderDelete IS NULL OR m.senderDelete = 0) AND m.sender_id = 2) OR
((mr.is_delete IS NULL OR mr.is_delete = 0) AND mr.recipient_id = 2)
ORDER BY m.message_id;
結果:
date_sent thread_id message_id sender_id sender_name recipient_id recipient_name
2013-10-09 14:31:50 106 113 1 John 2 Mark
2013-10-09 14:30:50 107 112 2 Mark 1 John
2013-10-09 14:30:31 106 111 2 Mark 1 John
2013-10-09 09:49:58 112 110 1 John 2 Mark
2013-10-09 09:20:24 108 106 1 John 2 Mark
2013-10-07 15:46:15 107 105 1 John 2 Mark
2013-10-07 14:40:25 103 104 1 John 2 Mark
2013-10-07 14:39:37 103 103 1 John 2 Mark
2013-10-07 14:36:34 107 102 2 Mark 1 John
2013-10-07 14:36:07 106 101 2 Mark 1 John
2013-10-07 14:35:29 105 100 2 Mark 1 John
2013-10-07 12:32:50 104 99 2 Mark 1 John
2013-10-07 12:15:43 104 98 2 Mark 1 John
2013-10-07 11:46:36 104 97 2 Mark 1 John
2013-10-07 11:43:32 104 96 1 John 2 Mark
2013-10-07 11:43:17 104 95 1 John 2 Mark
2013-10-07 11:27:14 103 94 1 John 2 Mark
我想是這樣的:
date_sent thread_id message_id sender_id sender_name recipient_id recipient_name
2013-10-09 14:31:50 106 113 1 John 2 Mark
2013-10-09 14:30:50 107 112 2 Mark 1 John
2013-10-09 09:49:58 112 110 1 John 2 Mark
2013-10-09 09:20:24 108 106 1 John 2 Mark
2013-10-07 14:40:25 103 104 1 John 2 Mark
2013-10-07 14:35:29 105 100 2 Mark 1 John
2013-10-07 12:32:50 104 99 2 Mark 1 John
可這在一個單一的查詢來完成,或者我應該創建另一個查詢基於第一個查詢的結果?
謝謝你的人,可以幫助我解決這個查詢....
有關獲得'Y'的'Top N''X'的問題是關於SO的最常見問題之一。也許你的搜索過於具體。 – GolezTrol
現在看着這個sqlfiddle。希望我能儘快爲您安排一些東西:) – mcv
@Strawberry鏈接已在帖子中提供。確切的數據庫結構並不完全正確,因爲sqlfiddle聲明只允許有一個主鍵。 – mcv