본문 바로가기

MSSQL

다중 테이블(3개 테이블 join)

[조인 할 테이블]
CollageHoldLecture_Temp: collage 테이블과 lecture을 조인하기 위한 연결고리가 되는 테이블 
collage: 대학
lecture: 과목

원하는 결과는 collage 테이블과  lecture 테이블에 있는 데이터지만 
collage의 idx와 lecture의 idx를 조인하기 위해서
연결고리 테이블인 CollageHoldLecture_Temp 이 필요하다!
조인이 생각하기 헷갈리다면 집합을 생각한다면 이해하기 쉽다.

처음 작성한 테이블 조인


문제점
- inner join은 서로가 일치하는 결과만 가져 온다.(교집합)
- 기준이 되는 테이블이 모호해지면 원하지 않는 결과를 가져온다.

수정한 테이블 조인

수정된 점
- inner join → left outer join(왼쪽테이블 + 교집합)

select ROW_NUMBER() OVER (Order by c.idx asc), c.idx, b.idx

from 테이블1 as a
left outer join 테이블2 as b
on a.lecIdx = b.lectureName
left outer join 테이블3 as c
on a.colName = c.colName
where b.idx is not null //b.idx가 null값이 아닌!
order by c.idx asc