본문 바로가기

Dev-/SQL

LEFT OUTER JOIN 추가 제약조건(WHERE, ON의 차이)

JOIN 자체를 잘 안써서 몰랐는데,


JOIN절의 ON과 WHERE은 같은 역할을 하는게 아니었다.

세개의 테이블을 LEFT OUTER JOIN 한 뒤, 검색이 필요한 쿼리를 짰는데, 검색이 생각대로 되지 않았다.



- 처음 잘못 실행한 쿼리

SELECT
AAA.aa,
BBB.bb,
CCC.cc
FROM
AAA AS A
LEFT OUTER JOIN
BBB AS B
ON
A.B_seq = B.seq
LEFT OUTER JOIN
CCC AS C
ON
A.C_seq = C.seq
AND 추가 제약조건 --------> 제약조건이 오른쪽에 걸려서 원하는 결과가 나오지 않는다.


- 원하는 결과가 나온 쿼리

SELECT
AAA.aa,
BBB.bb,
CCC.cc
FROM
AAA AS A
LEFT OUTER JOIN
BBB AS B
ON
A.B_seq = B.seq
LEFT OUTER JOIN
CCC AS C
ON
A.C_seq = C.seq
WHERE
추가 제약조건 --------> 제약조건이 왼쪽(여기서는 최종 결과 테이블)에 걸려 원하는 결과가 나온다.




WHERE은 제약조건이 왼쪽에 걸리고, ON은 오른쪽에 걸린다.

확실한 게 아니라,, 참고만