連結されたユーザー メッセージを表示するプライベート メッセージング システム。
• ユーザーが送信および受信したメッセージを time_sent 順にグループ化
• 各メッセージ タブに送信者/受信者の名前、メッセージ、および time_sent が表示さ
れます • クエリの速度を向上させるためのヒント (インデックスなど)?
MESSAGES TABLE
--------------
id sender receiver time_sent message opened recipientDelete senderDelete
Users Table
-----------
id first_name last_name
私の試み:
$userid = logged in user
$query="SELECT MAX(id), sender, receiver, MIN(time_sent), message, opened
FROM messages
WHERE (receiver='$userid' AND recipientDelete='0')
OR (sender='$userid' AND senderDelete='0')
GROUP BY receiver,sender
ORDER BY time_sent DESC LIMIT 8";
結果/問題:
ログインしたユーザー (id=3) が 2 人のユーザー (id=1、および id=2) からメッセージを受信した場合、このクエリはユーザー 1 と 2 から送信されたメッセージを返します。
2 回目の試行:
$query="SELECT MAX(id), sender, receiver, MIN(time_sent), message, opened
FROM ( SELECT
CASE WHEN sender = '$userid' THEN receiver ELSE sender END
MIN(time_sent)
FROM messages
WHERE sender = '$userid' OR receiver = '$userid'
GROUP BY CASE WHEN sender = '$userid' THEN receiver ELSE sender END)
ORDER BY time_sent DESC
LIMIT 8";
エラーを返しました。