outer join 에서 where 절에 써야 할지..관계절에 써야 할지...
카테고리 없음 2009. 3. 17. 14:06 |다음의 경우 T1은 강의테이블이고 T2는 강의를 들은 회원의 로그가 들어있는 테이블이다.
이경우 아래 2개의 쿼리중 옳은 것은?
[1번쿼리]
select T1.C1 강의코드,T2.C4 들은시각 from T1 a left outer join T2 b
on (a.C1 = b.C1 and a.C2=b.C2 and b.C3='특정사용자ID')
where a.C2='특정과목코드'
[2번쿼리]
select T1.C1 강의코드,T2.C4 들은시각 from T1 a left outer join T2 b
on (a.C1 = b.C1 and a.C2=b.C2 )
where a.C2='특정과목코드' and b.C3='특정사용자ID'
정답: 1번
설명: outer join 에서 옵셔널테이블(left join 이므로 right 에 있는 테이블이 옵셔널 테이블)의 상수조건(b.Column='일정한값' 이 되는 조건)은 관계(on 절)에 명시되어야 하지 필터링 조건(where 절) 에
명시되면 안된다.
2번쿼리의경우 b.C3 의 값을 where 절에 정의하게 되면 outer join 이 아니라 inner join이 되어
특정과목의 강의를 볼 수 없게 된다.