2012-08-31 3 views
-1

쿼리에 참여해야하는 테이블이 4 개 있습니다. 나는 테이블 1의 모든 결과를 원한다. 그런 다음 테이블 1,2,3의 결과에 합류하기를 원한다. 이 쿼리를 작성하는 방법을 모르겠습니다.4 개의 테이블을 결합해야합니다.

SELECT 
* 
FROM 
t1 
INNER JOIN 
(
t2 on t2.id = t1.id 
FULL OUTER JOIN t3 on t3.id = t1.id 
FULL OUTER JOIN t4 on t4.id = t1.id 
) 

내가 조인의 다른 유형을 설명 this post을 발견했다 :

여기 내 추측이다. 이것으로부터 나는 table1에 대해 왼쪽 또는 오른쪽 조인을 원하지만 중첩 된 문에 대해 혼란스러워합니다.

+0

이 테이블들은 모두 어떻게 관련되어 있습니까? 이를 아는 것은 쿼리를보다 효율적으로 만드는 데 도움이됩니다. –

답변

2

질문에 대한 열쇠는 당신이 왼쪽 외부를 의미한다 표 1의 모든 결과를 원하는 것입니다 가입 :

select * 
    from t1 left outer join 
     t2 
     on t1.id = t2.id left outer join 
     t3 
     on t1.id = t3.id left outer join 
     t4 
     on t1.id = t4.id 

왼쪽 바깥는 "전에" "첫 번째"나에있는 모든 기록을 유지 조인 두 번째 테이블의 레코드는 포함하지 않습니다. t1로 시작하기 때문에 모든 레코드는 t2와 일치하는 것으로 만 유지됩니다.

+0

외부 조인을 t3으로 나왔을 때 외부 조인은 여전히 ​​t1과 관련이 있습니까? – spyderman4g63

+0

count (*) t1을 선택하면 594333이됩니다. 그러나이 쿼리에 대한 계산을 실행하면 1125176이됩니다. t1보다 많은 행을 얻는 것처럼 보입니다. – spyderman4g63

+0

오, 대기 하나의 t1.id에 대해 하나 이상의 여러 행을 만들 수 있습니다. – spyderman4g63

관련 문제