これにぴったりのタイトルを見つけるのに苦労しています。
私は 2 つのテーブルを持つメッセージング システムに取り組んでいます。1 つはすべての異なる会話 (会話中のユーザーと会話の uid) を持ち、もう 1 つはユーザー間のメッセージを含みます。
会話ごとに、会話の uid と user_id を使用して、会話内のすべてのユーザーの行を作成しています。会話には 2 人のユーザーだけでなく、それ以上 (3、4、5、6 など) のユーザーがいる場合もあります。
解決方法がわからない SQL ステートメントに問題があります。問題は、3 人のユーザーの間で会話があり、その後、2 人のユーザーが 3 人目のユーザーなしでプライベートに会話を始めたいと言う場合です。2 人のユーザーが既に他のユーザーと会話しているときに、SQL ステートメントが何も返さないようにするにはどうすればよいですか。テーブルに 2 つの新しい行を独自のプライベート conversation_id で追加できるようにします。
テーブルは次のようになりconversation_list
ます。
|id | user_id| conversation_id|
-----------------------------
| 1 | 1| 1|
| 2 | 3| 1|
| 3 | 1| 2|
| 4 | 2| 2|
| 5 | 4| 2|
そして今のところ、私のSQLコードは次のようになっています:
SELECT *
FROM conversation_list
WHERE user_id IN (user1_id,user_id2)
GROUP BY conversation_id
HAVING COUNT(*) = 2