FULL OUTER JOIN

반응형
반응형

SQLD문제를 풀다가
문제가 생각보다 쉽지 않아 블로그에 올려서 공부할려구 한다.
SQLD 특성상 sql쿼리를 보고 결과를 유추할 수 있어야 한다.
FULL OUTER JOIN같은 경우도 이론은 알고 있는데 막상 문제로 보니 쉽지 않았다.
그래서 그림으로 그려서 이해시킬려구 한다.

다음과 같은 데이터가 준비되었다.

INSERT INTO TB_DEPT_52 (DEPT_NO, DEPT_NM) VALUES ('D101','데이터개발팀');
INSERT INTO TB_DEPT_52 (DEPT_NO, DEPT_NM) VALUES ('D102','파이개발팀');
INSERT INTO TB_DEPT_52 (DEPT_NO, DEPT_NM) VALUES (NULL,'자바개발팀');

INSERT into tb_emp_52(emp_no,emp_nm,job_nm ,dept_no)
VALUES ('E001','이경오','SQL 개발자', 'D101');

INSERT into tb_emp_52(emp_no,emp_nm,job_nm ,dept_no)
VALUES ('E002','이수지','SQL 개발자', 'D101');

INSERT into tb_emp_52(emp_no,emp_nm,job_nm,dept_no)
VALUES ('E003','김선태','파이 개발자', NULL);

INSERT into tb_emp_52(emp_no,emp_nm,job_nm,dept_no)
VALUES ('E004','김지선','파이 개발자', 'D102');

INSERT into tb_emp_52(emp_no,emp_nm,job_nm,dept_no)
VALUES ('E005','박선정','파이 개발자', 'D102');

INSERT into tb_emp_52(emp_no,emp_nm,job_nm,dept_no)
VALUES ('E006','박선정','자바 개발자', NULL);

일단 ddl도 있긴한데 이 문제를 푸는데는 그리 큰 문제는 되지 않을 것 같아 올리지 않는다.
아무튼
문제는

SELECT 
   A.DEPT_NO
, A.DEPT_NM
,  B.EMP_NO
, B.job_nm
,  B.DEPT_NO
FROM TB_DEPT_52 A FULL OUTER JOIN TB_EMP_52 B 
ON (A.DEPT_NO = B.DEPT_NO);

이 쿼리가 쿼리 갯수가 몇개 나오는지에 대한 문제다.
결국 이 문제를 어떻게 풀까 고민해봤는데 생각보다 쉽지 않을 것 같다.

- outer join null 상관없이 들어간다.
- full 양쪽다 상관없다 
이게 조건인데
이걸로는 부족하는 생각이 들었다.
일단 각각 데이터를 출력해보자.

D101	데이터개발팀
D102	파이개발팀
NULL    자바개발팀

SELECT * FROM TB_DEPT_52;

E001	이경오	SQL 개발자	D101
E002	이수지	SQL 개발자	D101
E003	김선태	파이 개발자 NULL
E004	김지선	파이 개발자 D102
E005	박선정	파이 개발자 D102
E006	박선정	자바 개발자 NULL

SELECT * FROM TB_EMP_52;

파이는 오타다. 귀찮아서 처리하지 않았다.

그러면 총 갯수가 9개가 나온다.

FROM TB_DEPT_52 A FULL OUTER JOIN TB_EMP_52 B 
ON (A.DEPT_NO = B.DEPT_NO);

inner 총 4건
left outer  5건
right outer 6건

left + right  - inner => 7건
이렇게 계산하는 건가?

아 이렇게 푸는거구나.;

[출처 : SQL+ sqld 비밀노트 p413 문제 52번]

 

 

 

 

반응형

'sql' 카테고리의 다른 글

2022.03.08 정리  (0) 2022.03.08
[database] ERD 표기 법 IE vs Barker  (0) 2022.02.13
[Learning SQL] 트랜잭션  (0) 2021.05.22
[Learning SQL] 내부 조인 vs 외부 조인  (0) 2021.05.12
[Learning SQL] 서브쿼리  (0) 2021.05.03

댓글

Designed by JB FACTORY