-3

を含むデータベースがありますusers conversations conversation_user

ここで、2 人のユーザーが会話しているかどうかを確認したいと考えています。どうすればこれをスマートに行うことができますか?

この場合、user1user2は会話をしています。

ここに画像の説明を入力

4

3 に答える 3

2

conversation_idこれにより、ユーザー 1 とユーザー 2 の共通点がすべてリストされます。

SELECT   conversation_id
FROM     conversations
WHERE    user_id IN (1, 2)
GROUP BY conversation_id
HAVING   COUNT(DISTINCT user_id)=2

ここでフィドルを参照してください。

于 2013-06-23T09:53:59.750 に答える
0
select count('x') 
from 
  conversation_user x
where
  (x.userid1 = 1 and x.userid2 = 2) or  
  (x.userid1 = 2 and x.userid2 = 1)

このクエリが を返す場合0、彼らは会話をしていません。そうでなければそうです。

于 2013-06-23T09:41:31.660 に答える
0

自己結合はそれを行うことができます:

SELECT c.conversation_id
FROM conversations c
JOIN conversations c2
    ON c.conversation_id=c2.conversation_id
WHERE c.user_id=<x> AND c2.user_id=<y>
于 2013-06-23T09:42:49.823 に答える