簡體   English   中英

MySQL查詢將消息分組為對話

[英]MySQL Query to Group Messages as Conversation

我需要在用戶的收件箱中將消息顯示為對話。 由發件人分組並顯示最后一條消息(從發件人收到的最后一封郵件或我對該發件人的最新回復)。

到目前為止,我當前的MySQL查詢僅顯示所有收到的消息而沒有任何分組。

這是我的數據庫結構:

+-----------------------------------------------------------------------------------+
|                                  users_messages                                   |
+-----------------------------------------------------------------------------------+
| message_ID | from_id | to_id | date | subject | body | unread | delete1 | delete2 |
+-----------------------------------------------------------------------------------+

+---------------------+
|        users        |
+---------------------+
| id | username | ... 
+----+----------+-----+

這是我目前的查詢:

$result = $DB->query("SELECT p.*, p.sender as sender, m.*
FROM  " . DB_PREFIX . "messages p
LEFT JOIN " . DB_PREFIX . "members m ON p.sender=m.member_id
WHERE p.receiver='" . $SESSION->conf['member_id'] . "' AND delete2=0
ORDER BY p.senddate DESC
LIMIT " . (($page - 1) * $PREFS->conf['per_page']) . ", " . $PREFS->conf['per_page']);

有點亂 - 但應該適合你:

SELECT 
    * 
FROM 
    user_messages 
WHERE 
    message_ID IN ( 
    SELECT 
        MAX(message_ID) 
    FROM 
        (SELECT 
            IF(m.from_id = <THE USER ID>, m.to_id, m.from_id) as other_user_id, 
            m.message_id 
        FROM 
            users_messages m 
        WHERE 
            m.from_id = <THE USER ID> OR m.to_id = <THE USER ID>) me 
    GROUP BY 
        other_user_id 
    ) 
ORDER BY 
    message_id DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM