728x90
반응형
<목차> |
※ 자료출처: 데이터 산업 진흥원(K-DATA)
6. 계층형 질의와 셀프 조인
셀프 조인
셀프 조인(Self Join)이란 동일 테이블 사이의 조인을 말한다.
- 셀프 조인은 동일 테이블 사이의 조인이기 때문에 FROM 절에 동일 테이블이 두 번 이상 나타남.
- 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 반드시 Alias 사용
- 또한, 칼럼에도 모두 테이블 별칭을 사용하여 어느 테이블의 칼럼인지 식별해줘야 함.
[기본적인 사용법]
SELECT ALIAS명1. 칼럼명, ALIAS명2. 칼럼명, .... FROM 테이블1 ALIAS명1, 테이블2 ALIAS명2 WHERE ALIAS명1. 칼럼명2 = ALIAS명2.칼럼명1; |
SELECT WORKER.ID 사원번호, WORKER.NAME 사원명, MANAGER.NAME 관리자명 FROM EMP WORKER, EMP MANAGER WHERE WORKER.MGR = MANAGER.ID; |
※ FROM 절에 사원 테이블을 두 번 사용해야 함.
[예제]
사원이라는 테이블 속에는 사원과 관리자가 모두 하나의 사원이라는 개념으로 동일시하여 같이 입력되어 있다.
이것을 이용해서 "자신과 상위, 차상위 관리자를 같은 줄에 표시하라".
SELECT E1.사원, E1.관리자, E2.관리자 차상위_관리자 FROM 사원 E1, 사원 E2 WHERE E1.관리자 = E2.사원 ORDER BY E1.사원; |
- 차상위 관리자를 구하기 위해서는 자신의 직속 관리자를 기준으로 사원 테이블과 한번 더 조인(셀프 조인)을 수행
- 결과 표시를 위해 SELECT 절에 2개의 '관리자' 칼럼 사용 (E1, E2)
- B와 C의 관리자는 A이고 차상위 관리자 없음
- D와 E의 관리자는 C이고 차상위 관리자는 A
※ 내부 조인을 사용할 경우 자신의 관리자가 존재하지 않을 경우에는 관리자(E2) 테이블에서 조인할 대상이 존재하지 않기 때문에 해당 데이터는 결과에서 누락
▶ 이를 방지하기 위해 아우터 조인을 사용해야 함. (관리자가 존재하지 않는 데이터까지 모두 결과에 표시)
SELECT E1.사원, E1.관리자, E2.관리자 차상위_관리자 FROM 사원 E1 LEFT OUTER JOIN 사원 E2 ON (E1.관리자 = E2.사원) ORDER BY E1.사원; |
[도움이 될 만한 글1]
[도움이 될 만한 글2]
이전글
다음글
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2과목 SQL 활용 - PIVOT 절과 UNPIVOT 절 (1) | 2024.01.29 |
---|---|
24년 1월 29일 - SQLD 시험 접수 !! (1) | 2024.01.29 |
SQLD 2과목 SQL 활용 - 계층형 질의와 셀프 조인 (1) (1) | 2024.01.26 |
SQLD 2과목 SQL 활용 - TOP N 쿼리 (1) | 2024.01.25 |
SQLD 2과목 SQL 활용 - 윈도우 함수 (2) | 2024.01.24 |