TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

SQLD 2과목 SQL 활용 - 계층형 질의와 셀프 조인 (2)

by 기록자_Recordian 2024. 1. 26.
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]

 

[SQLD] 셀프조인, 계층형 질의 이해를 위한 꿀팁 영상

2024년 첫번째 SQLD 시험이 앞으로 23일 남았다. (24년 3월 9일 시험) 유튜브, 블로그 등을 찾아보면 SQLD 시험을 3주 동안, 2주 동안 누구는 3일 (!) 동안 공부하고 시험을 봐서 합격했다는 후기들이 많

puppy-foot-it.tistory.com

 

[도움이 될 만한 글2]

 

SQLD 2과목 SQL 활용 - 셀프 조인(보강)

SQLD 시험 범위를 블로그에 정리하고, 공부하고, 기출문제를 푸는 중인데 여전히 이해 안 되는 개념들이 몇 가지가 있다. 그 중 하나는 셀프 조인 아래는 이전에 공부한다고 올려놓은 자료인데,

puppy-foot-it.tistory.com


이전글

계층형 질의와 셀프 조인 (1)

 

다음글

PIVOT 절과 UNPIVOT 절

 

728x90
반응형