Facebookの現在のメッセージボックス(「会話」のリストが含まれています)のように、現在のユーザーが別のユーザーとの間で送受信した最後のメッセージのリストをデータベースから取り出そうとしています。
サンプルデータ:
msg_id sender_id target_id date_sent content ...
1 2 4 20 bla ...
2 2 5 21 bla ...
3 2 6 22 bla ...
4 4 2 25 bla ...
5 5 6 26 bla ...
6 4 2 50 bla ...
現在のユーザーが 2 の場合、2 が他のユーザーとの最後のメッセージ (送信または受信) のみを取得したい
希望するデータは次のとおりです。
msg_id sender_id target_id date_sent content ...
6 4 2 50 bla ...
2 2 5 21 bla ...
3 2 6 22 bla ...
msg_id 6 が存在するのは、(送信者/受信者が誰であるかに関係なく) メッセージ 2 と 4 が持っていたすべてのメッセージの中で最も大きな日付 (50) を持っているためです。msg_id 2 と 3 が存在します。 6 (それぞれに 1 つのメッセージを送信)
これを実現する方法が見つかりませんでした。送信者 ID と受信者 ID の両方を含む一意に生成されたフィールドに group_by を含める必要がありますか? わかりません、助けてください
アップデート:
私はアイデアが気に入り、最終的に別の新しいフィールドを持つそのテーブルのビューを作成しました。このフィールドには、2 つの ID を順番に (大きい方が先に) アンダースコアで区切られた連結が含まれています。このように、そのフィールドは各会話に固有です。次に、それによってグループ化します:)