2014-02-24 76 views
0

我有2個SQL表:ConversationsUsers。對話有很多用戶,用戶有很多對話。所以我有連接表Conversations_users有2個字段:conversation_iduser_idSQL查詢檢索對話記錄

現在我知道一些用戶的ID,我想檢索所有這些用戶都在同一個對話中的對話。有人可以幫助我嗎?

+0

你做了什麼?你的代碼在哪裏? – Oyeme

+0

發佈你的架構,因爲你在這裏只存儲我認爲你想檢索對話的評論,所以你需要在3個表上的加入 – enigmaticus

+0

你真的需要3個表,對話,消息,用戶, –

回答

1

一種方式是通過用戶,組由會話過濾Conversations_users表,然後過濾所得到的基團爲那些含有的(不同)用戶所需數量:

SELECT Conversations.* 
FROM  Conversations JOIN Conversations_users USING (conversation_id) 
WHERE Conversations_users.user_id IN (1,2,3) 
GROUP BY conversation_id 
HAVING COUNT(DISTINCT Conversations_users.user_id) = 3 

如果(conversation_id, user_id)保證是在Conversation_users(例如它的表格的PRIMARY KEY)中是唯一的,可以使用COUNT(*)而不是(昂貴的)COUNT(DISTINCT Conversations_users.user_id)