본문 바로가기
My Image
전공지식/DataBase

[SQLD] 제2장 - DB계층형 질의와 셀프조인(Hierarchical Query & Self Join)_2

by Lim-Ky 2018. 6. 6.
반응형

  





1. 셀프조인(Self Join)이란?


지난시간 : 2018/06/03 - [전공지식/DataBase] - [SQLD] 제2장 - DB계층형 질의와 셀프조인(Hierarchical Query & Self Join)_1

이번시간은 데이터베이스에서 셀프조인(Self Join)에 대해서 알아보도록 하겠습니다. 셀프조인(Self Join)이란 동일 테이블 사이의 조인을 말합니다. 따라서 FROM 절에 동일 테이블이 두 번 이상 나타납니다. 


동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 반드시 별칭을 반드시 사용해야합니다. 또한, 칼럼에도 모두 테이블 별칭을 사용해서 어느 테이블의 칼럼인지 식별이 가능하도록 만들어야합니다. 




2. 셀프조인(Self Join) 사용법



셀프조인 포멧 


SELECT ALIAS_1.칼럼명, ALIAS_2.칼럼명, ...

FROM 테이블1 ALIAS_1, 테이블2 ALIAS_2

WHERE ALIAS1.컬럼명2 = ALIAS_2.컬럼명1;



실제 적용 쿼리


SELECT E1.EMPNO 사원, E1.MGR 관리자, E2.MGR 차상위_관리자

FROM EMP E1, EMP E2

WHERE E1.MGR = E2.EMPNO

ORDER BY E2.MGR DESC, E1.MGR, E1.EMPNO;



적용 쿼리에서 확인할 수 있듯이 반드시 테이블 별칭과 컬럼 별칭을 명시해서 사용해야합니다. 
같은 테이블을 조인하기 때문에 명시적으로 표현해줘야합니다.

이제 실제 예시를 통해 셀프조인을 알아보겠습니다.



3. 셀프조인(Self Join) 예제


EMP 사원 테이블에는 MGR이라는 사원별 관리자 사원번호가 있습니다. 결국 공통으로 사원번호를 통해 관리자와 사원이 관리되고 있는 것입니다. 즉 관리자 사원번호는 사원번호 컬럼과 일치한다는 점을 이용해 셀프조인을 사용할 수 있습니다. 셀프조인을 통해 자신의 관리자의 관리자 즉 차상위 관리자를 구할 수 있습니다.







[예제] 자신의 상위, 차상위 관리자를 같은 줄에 표시해라.






자신과 자신의 관리자는 동일한 행에서 데이터를 구할 수 있으나, 차상위 관리자는 바로 구할 수 없습니다. 하지만 위 예제처럼 셀프조인을 통해 차상위 관리자를 구할 수 있습니다.


하지만, 최상위 괸라자인 7839는 결과값에 포함되어 있지 않습니다. 즉 관리자번호가 NULL이기 때문에 셀프조인시 제외되었습니다. 

이를 막기위해 아우터 조인 즉 외부조인을 통해 최상위 관리자인 7839도 결과에 포함되도록 바꾸겠습니다.







7839도 결과값에 포함됨을 확인할 수 있습니다.


간단한 예제를 통해 오늘은 셀프조인 개념에 대해 알아보았습니다. 수고하셨습니다.








반응형

댓글