2014-04-26 4 views
0

내 질문과 관련된 3 개의 테이블이 있습니다.하위 쿼리 및 가입

사용자 => 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

ConversationMember (c_id,u_id) 

    1 1 

    1 2 

    1 3 

답변

1

I에 포함 된 대화에 대한 모든 정보가 포함되어있어서 사용자가이 요청 메신저 f 올바르게 이해합니다. 전환 수 행이 모두 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) 

의 일부입니다 대화의 대화 멤버 테이블의 모든 레코드를 반환합니다