FULL OUTER JOIN
- sql
- 2022. 2. 28. 20:04
반응형
반응형
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 |