Dev-/SQL
LEFT OUTER JOIN 추가 제약조건(WHERE, ON의 차이)
thiago6
2019. 4. 2. 17:04
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은 오른쪽에 걸린다.
확실한 게 아니라,, 참고만