私は、私に送信した各ユーザーからの最後のメッセージを表示する SQL を作成しようとしています。私はphpmyadminを使用しています。
私は2つのテーブルを持っています
ユーザー
ID | ユーザー名 6 6666 7 8888
メッセージ
メッセージ ID | 送信者 ID | レシーバー ID | 件名 | テキスト | 日にち 1 6 3 aaa bbb 2012-07-22 00:14:41 2 6 3 aaa1 bbb1 2012-07-22 00:15:41 3 7 3 vvv vvv 2012-07-22 00:19:41
したがって、結果は(日付(時間)順)でなければなりません
3 7 3 vvv vvv 2012-07-22 00:19:41 2 6 3 aaa1 bbb1 2012-07-22 00:15:41
このクエリを作成しました (ID = 3 であることをテストしました) 以下のクエリは希望どおりに機能しますが、あまり良くなく (最適化され)、このデータを選択するより簡単な方法があると思います
SELECT u.username, m.sender_id , m.subject, m.message
FROM users u
LEFT JOIN messages m ON m.sender_id = u.id OR m.message_id = (SELECT b.message_id FROM messages b WHERE b.receiver_id = 3 ORDER BY b.date DESC LIMIT 0,1)
WHERE m.receiver_id = 3
GROUP BY m.sender_id
ORDER BY m.date DESC