私は次のようにフォーマットされたメッセージのテーブルがあります。照会の会話
+------------------------------------------------------------------+
| id|sender_id| recipient_id | message_text |created_at |
+------------------------------------------------------------------+
| 1 | 2 | 10 | "test1" |"2017-04-10 09:05:45" |
| 2 | 10 | 2 | "test2" |"2017-04-10 09:05:47" |
| 3 | 2 | 4 | "test3" |"2017-04-10 09:05:49" |
| 4 | 10 | 4 | "test4" |"2017-04-10 09:05:51" |
| 5 | 4 | 2 | "test5" |"2017-04-10 09:05:53" |
| 6 | 2 | 10 | "test6" |"2017-04-10 09:05:58" |
+------------------------------------------------------------------+
を私は何をしようとしているが、ログインしているユーザーのすべての「会話」(ID 2と言うユーザー)を取得することですその会話の最後のメッセージとともに表示されます。私は、ユーザーuser2ののIDを引き出すことに成功し は、このクエリを使用して、メッセージを持っています
select distinct users.id
from messages, users where
(recipient_id = 2 and users.id = sender_id)
or
(sender_id = 2 and users.id = recipient_id);
User2が送信され、および/またはこれらの二人からのメッセージを受け取ったかのようにこれが何を生み出すこと
4
10
です(test1, test2, test6
は10
、test3, test5
は4
)。
私は何をすることはできませんが、それはまた、得られたIDによって送信または受信された最後のメッセージを生み出すように、このクエリを変更である - 例えば
4 | test5
10 | test6
これは実際に私が必要とする結果をほとんど私に与えますが、私はメッセージの日付の代わりに最新のメッセージが必要です。私が選択するメッセージテキストを追加するだけで、あなたが日付で行った部分はまだ正しいですが、私が受け取るメッセージは日付と一致しません。私はアプローチが気に入っていますが、あなたはこのソリューションにどのようになったのか少し説明できますか? – hpdobrica
変更されたクエリは魅力のように機能します!私は本当にあなたがそこで何をしたのか聞いて欲しいです、私はちょうどそれをコピー/貼り付けたいとは思わないhaha :) – hpdobrica
@hpdobrica私はあなたに深い説明をしました。 –