1

これが私の問題です。受信トレイに、1人のユーザーからのみ受信した複数のメッセージが表示されます。Facebookのように受信トレイを表示する必要があります。1人のユーザーにつき1つのメッセージのみを表示します。会話ビューによく似ています。ここで、私とユーザーの間の最後のメッセージが受信トレイに表示されます(彼の最後のメッセージまたは彼への最後の返信のいずれか)。

GROUP BYを試しましたが、結果が正確ではありません。最近のメッセージの一部は表示されず、最後の会話の日付でソートされていません。

これが私のデータベース構造です:

+-----------------------------------------------------------------------------------+
|                                  users_messages                                   |
+-----------------------------------------------------------------------------------+
| message_ID | sender |receiver| date | subject | body | unread | delete1 | delete2 |
+-----------------------------------------------------------------------------------+

+---------------------+
|        members      |
+---------------------+
| 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
GROUP BY p.sender ORDER BY p.senddate DESC
LIMIT " . (($page - 1) * $PREFS->conf['per_page']) . ", " . $PREFS->conf['per_page']);
4

1 に答える 1