multiple joins 테이블 3개 이상 join하는 경우

Created by
  • 서경태
Created at
테이블 2개를 합칠 경우 우리는 left join, inner join을 사용한다.
만약 테이블이 3개라면 어떻게 해야할까?
selelct * from table_a a join table_b b on a.col = b.col join table_c c on b.col = c.col
여기서도 inner join, left join 모두 가능하고 이 둘을 혼합해서 사용하는 것도 가능하다.
1.
inner join (= join)
모든 테이블의 공통된 데이터를 선택할 때 사용한다.
selelct * from table_a a join table_b b on a.col = b.col join table_c c on b.col = c.col
2.
left join
기준 테이블의 모든 데이터를 포함하고, 나머지 테이블에서 일치하는 데이터를 포함한다. 일치하지 않는 경우 Null을 반환한다.
selelct * from table_a a left join table_b b on a.col = b.col left join table_c c on b.col = c.col
3.
inner join 과 left join 혼합 사용
기준 테이블의 모든 데이터를 포함하면서 다른 테이블에서 조건에 맞는 데이터만 포함하거나, 조건에 맞지 않는 데이터를 포함할 때 혼합해서 사용한다.
selelct * from table_a a join table_b b on a.col = b.col left join table_c c on b.col = c.col
이렇게 하면 table_a와 table_b의 일치하는 데이터를 반환하되 table_c는 일치 여부를 따지지 않는다.
즉, table_c에는 해당 데이터가 없는 경우 null을 반환하고 table_a와 table_b의 조인 조건을 만족하는 행만 결과에 포함된다.