2016-06-22 4 views
1

은 내가 참석자 다음과 같은 구조의 테이블이 특정 주어진 왼쪽 테이블 있지만, 올바른 테이블 만 보여주는 정보의 모든 식별자를 포함하는 테이블에 가입하는 방법 : 또한

+--------------+---------+ 
| attendee_id | others1 | 
+--------------+---------+ 
| abcd  | A  | 
| ghij  | B  | 
| defg  | C  | 
+--------------+---------+ 

그리고 다음과 eventattendees 테이블을 구조 :

+--------------+---------+----------+ 
| attendee_id | others2 | event_id | 
+--------------+---------+----------+ 
| wxyz  | D  |  1 | 
| mlno  | E  |  2 | 
| defg  | F  |  3 | 
| defg  | G  |  2 | 
| abcd  | H  |  1 | 
+--------------+---------+----------+ 

내가 원하는 모든 참석자 참석자 테이블에서 ID와도 수익을 포함하는 (attendee_id에 의해)는이 테이블의 조인 반환, 일부 EVENT_ID을 부여, 쿼리를 작성하는 것입니다 eventattidde 테이블에있는 정보 중 event_id과 일치하는 정보. 말해봐, event_id 3 :

+--------------+---------+---------+----------+ 
| attendee_id | others1 | others2 | event_id | 
+--------------+---------+--------------------+ 
| abcd  | A  | null | null | 
| ghij  | B  | null | null | 
| defg  | C  | F |  3 | 
+--------------+---------+--------------------+ 

어떻게 할 수 있습니까?

답변

3

가입 떠났다. 당신이 where 기준에 넣을 경우

select a.attendee_id, a.others1, e.others2, e.event_id 
from attendees a 
    left join eventattendees e on a.attendee_id = e.attendee_id and e.event_id = 3 

, 그것은 outer join을 부정합니다.

0

사용 당신은 대신 outer join을 존중하는 joinwhere 기준을 둘 필요가

select a.attendee_id, a.others1, b.others2, b.event_id 
from attendees as a 
left join eventattendees on a.attendee_id = b.attendee_id and b.event_id= 3; 
+0

왼쪽 길을 가야하는 것입니다 가입하지만, 추가 기준이 가입하기에 정의되어야한다. –

+0

나는 알고있다. .. 분명히 보인다. 어쨌든 나는 대답을 업데이트했다. – scaisEdge

+0

그것이 가능한 것처럼 명백하게 받아 들여지는 대답은 왼쪽 조인의 기준을 가진 대답이다. –

0

이 작업을 시도 할 수 있습니다 :

SELECT A.attendee_id, A.others1, ISNULL(B.others2,'empty') AS others2, ISNULL(B.event_id,'empty') AS event_id FROM TableA A LEFT JOIN TableB B ON A.attendee_id=B.attendee_id