2014-04-26 46 views
0

我有3个表涉及我的问题;子查询和加入

User => u_id | first_name

对话=> c_id | bla bla

ConversaionMember => c_id | u_id |喇嘛喇嘛

就是我要问的是,我想有关于有用户3(我的意思是用户ID)与所有其他用户交谈是在谈话

举个例子所有信息

Conversation 

1 

2 

ConversationMember (c_id,u_id) 

1 1 

1 2 

1 3 

2 1 

2 3 

我想要一个查询,让我这一结果时,即时通讯要求用户2,其包括有关的对话该用户2包含在

ConversationMember (c_id,u_id) 

    1 1 

    1 2 

    1 3 

回答

1

我的所有信息如果我理解正确,您需要ConversationMember中的所有行进行转换,其中一个成员是2(或其他)。如果是这样的:

select cm.* 
from ConversationMember cm 
where exists (select 1 
       from ConversationMember cm2 
       where cm2.u_id = 2 and 
        cm2.c_id = c.c_id 
      ); 
+0

这个这就是我所要求的 – onurfoca

0

下面的查询将返回从谈话中成员表中的所有记录会话用户数3是

SELECT * FROM `ConversationMember` WHERE `c_id` IN (SELECT `c_id` FROM `ConversationMember` WHERE `u_id`=3) 

部分有没有必要建立连接