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은 오른쪽에 걸린다.
확실한 게 아니라,, 참고만
'Dev- > SQL' 카테고리의 다른 글
MySQL에서 Merge Into(데이터가 있으면 수정, 없으면 삽입) 사용하기 (2) | 2019.02.25 |
---|---|
서브쿼리 - 로우별 카운트 추가하기(쿼리 별칭,alias 범위) (0) | 2019.01.15 |