SQL과 데이터베이스 - 조인과 집계 데이터 : OUTER JOIN
카테고리 : SQL >> Sqlgrammar
OUTER JOIN
이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.
OUTER 조인 실습
: 저번 포스트에서 만들었던 BASKET_A와 BASKET_B 테이블을 사용한다
● LEFT OUTER 조인
SELECT
A.ID AS ID_A
, A.FRUIT AS FRUIT_A
, B.ID AS ID_B
, B.FRUIT AS FRUIT_B
FROM
BASKET_A A LEFT OUTER JOIN BASKET_B B
ON A.FRUIT = B.FRUIT;
>> BASEKT_A 테이블과 BASKET_B 테이블을 JOIN 하는데 BASKET_A를 기준집합으로 조인한다.
즉, BASKET_A에 없는 FRUIT값이면 BASKET_B의 값들은 출력하지 않는다.
● LEFT OUTER 조인 - LEFT ONLY
SELECT
A.ID AS ID_A
, A.FRUIT AS FRUIT_A
, B.ID AS ID_B
, B.FRUIT AS FRUIT_B
FROM
BASKET_A A
LEFT OUTER JOIN BASKET_B B
ON A.FRUIT = B.FRUIT
WHERE B.ID IS NULL; --LEFT ONLY
>> WHERE B.ID IS NULL; 부분만 추가된 것이다.
즉, 위의 결과에서 B테이블이 NULL인 것만 출력하는 것이다. (A기준으로 B와 겹치는 부분 출력 제외)
● RIGHT OUTER 조인
SELECT
A.ID AS ID_A
, A.FRUIT AS FRUIT_A
, B.ID AS ID_B
, B.FRUIT AS FRUIT_B
FROM
BASKET_A A
RIGHT OUTER JOIN BASKET_B B
ON A.FRUIT = B.FRUIT;
>> BASKET_A 테이블과 BASKET_B 테이블을 조인하는데 BASKET_B를 기준집합으로 조인한다.
즉, BASKET_B에 없는 FRUIT 값이면 BASKET_A의 값들은 출력하지 않는다.
● RIGHT OUTER 조인 - RIGHT ONLY
SELECT
A.ID AS ID_A
, A.FRUIT AS FRUIT_A
, B.ID AS ID_B
, B.FRUIT AS FRUIT_B
FROM
BASKET_A A
RIGHT OUTER JOIN BASKET_B B
ON A.FRUIT = B.FRUIT
WHERE A.ID IS NULL;
>> WHERE A.ID IS NULL; 부분만 추가된 것이다.
즉, 위의 결과에서 A테이블이 NULL인 것만 출력하는 것이다. (B기준으로 A와 겹치는 부분 출력 제외)
## 사용 예시
- 기준집합이 있고, 보고자하는 집합을 출력하고자 한다. 고객은 다 보고싶고, 계약 유무와 상관없이 고객을 다 보고싶다.
그러나, 어느 순간에는 계약한 고객들을 보는것이 더 좋을수도 있다.