mysql ベースのチャット アプリケーションを構築しています。
私のデータベーススキーマには次のテーブルがあります。
Users Messages
================= =================
id id
screen_name message
from
to
timestamp
メッセージ テーブルの from フィールドと to フィールドには、各メッセージを送受信したユーザーの ID が含まれています。
ユーザー ($id) とその友人 ($friend) の間のすべてのメッセージを表示しようとしています。私のクエリは次のとおりです。
$query = "SELECT messages.* , users.screen_name FROM users CROSS JOIN messages ";
$query .= "ON ( messages.to = $id AND messages.from = $friend ) ";
$query .= "OR ( messages.to = $friend AND messages.from = $id )";
問題は、すべてのメッセージが結果テーブルに 2 回あることです。
DISTINCT を使用してみましたが、このシナリオでは機能しないか、間違って使用しました。
2 人のユーザー間で各メッセージを 1 回だけ受信するには、どのクエリを使用すればよいですか?