2016-05-06 4 views
0
table users: id, first_name, ... 
table dialog_members: user_id, dialog_id 
table dialogs: id, ... 
table messages: id, dialog_id, ... 

私は2つのuser_idでDialogを見つけることができましたか?"many to many"でいくつかの値を見つける

例: ダイアログ

1 

私はUSER_ID = 1とのuser_id = 2

結果との対話を選択する必要がありdialog_members

user_id | dialog_id 
1  | 1 
2  | 1 
1  | 2 
3  | 2 
... 

:IDを持つダイアログ= 1

+0

2人以上が参加できますか?ダイアログに3人の1,2,3人が関与している場合、そのダイアログには1,2が含まれているのでそのダイアログも必要でしょうか? user_ID、dialog_Idが繰り返される可能性があります。この場合、カウント内の別個のものが必要ですか?いいえ、ユーザーIDの個数の中の別個のものは必要ありませんか? – xQbert

+0

ダイアログは常に関与します2人 – DrobyshevAlex

+0

以下の応答が機能します。 2人以上の人がいる場合は、以下のレスポンスがあなたが望んでいないレコードを取り込む可能性があります。 – xQbert

答えて

0
SELECT Dialog_ID 
FROM dialog_members 
WHERE user_ID in (1,2) 
GROUP BY dialog_ID 
HAVING count(Distinct user_ID) = 2 

リストをユーザー1,2に限定します。 dialog_IDでグループ化すると、返されたdialog_IDに2の別個のユーザーカウントがあることを確認します。これはIDS 1,2の場合のみ可能です。

+0

それは、ありがとう! – DrobyshevAlex

+0

*これには、1,2 user_Idの両方が関与している限り、複数の人を含むダイアログが含まれます。 – xQbert

関連する問題