Facebookのようなチャットシステムを作っています。同時に2人か3人で話すことができます。私の問題は、会話の選択にあります。
inbox_conversation (このテーブルは、ユーザーが初めて話し始めた場合に会話の新しい ID を作成するためのものです)
id_conversation | occured_at
1 13482942
2 18583953
inbox_join (ユーザーが会話に参加するためのテーブル。この場合、ID 1 のディスカッションにユーザー 1、2、3 がいます)
id_conversation | id_user
1 1
1 2
1 3
2 4
2 5
inbox_msg (送信されたメッセージを記録するためのテーブル)
id_conversation | id_user | message | occured_at
1 1 Hey 1457694
1 2 Hola 3848374
1 3 Cool 3294933
2 4 Wow 4392934
2 5 Yes 9485737
ここで、会話の id_user だけを持つメッセージを選択するためのクエリを実行する必要があります。この場合、1、2、3 があります。誰かがこのクエリを作成するのを手伝ってくれます。
id_user 1,2,3 とのディスカッションを選択するために探している最終結果
id_user | message | occured_at
1 Hey 1457694
2 Hola 3848374
3 Cool 3294933
PS: 会話に 3 人のユーザーがいて、そのうち 2 人だけを選択しようとすると、会話が表示されないことがあります。
この場合、ユーザー 1,2 の ID だけを持っている場合、その 2 人のユーザーだけとの議論はありませんが、ユーザー 1 がデータベース内のユーザー 2 に書き込むと、別の ID の議論になり、両方のユーザーに関連付けられます。そのように、別のユーザー例のユーザー 3 を追加すると、ユーザー 1 と 2 の間で送信された以前のメッセージを見ることができません。
id user だけで選択するのが悪い考えである場合は、ディスカッションの id を渡すための解決策を検討できます。