0

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 を渡すための解決策を検討できます。

4

2 に答える 2

0

質問は少し不明確なので、正確に何が必要かを明確にするだけですか?

最初に、結果は ID_User のみに基づいてクエリされると述べました。しかし、最後の例では、「...結果はディスカッションID 1の結果です」と言っているので、どれが正しいですか? DiscussionID と ID-User の両方をフィルターに使用できますか?

また、「PS: 会話に 3 人のユーザーがいて、そのうちの 2 人だけを選択しようとすると、会話が表示されないことがあります」

つまり、id_User フィルターのタイプは「WHER ID_USER IN ('','','',)」です。

于 2013-10-01T21:14:23.683 に答える