본문 바로가기

DB/SQLD

SQL 활용 - 계층형 질의

반응형

계층형 질의

테이블에 계층형 테이터가 있을 때 사용.

게층형 데이터는 동일 테이블에 계층적으로 상위 하위 데이터가 포함된 데이터를 말함.

 사원

관리자 

 A

 

 B

 C

 D


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT LEVEL, LPAD(' '4*(LEVEL-1|| EMPNO 사원, MGR 관리자, CONNECT_BY_ISLEAF ISLEAF
FROM EMP
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
 
//계층형 질의에서 사용되는 가상 컬럼
//LEVEL : 루트 = 1, 그 하위 데이터면 2, 리프데이터까지 1씩 증가.
//CONNECT_BY_ISLEAF : 전개 과정에서 해당 데이터가 리프데이터면 1, 그렇지 않으면 0
 
// START WITH 는 계층 구조 전개의 시작위치를 지정. 위에서는 관리자가 없는 레코드
// CONNECT BY 절은 전개될 자식 데이터를 지정하는 구문
// PRIOR 자식 = 부모 : 부모->자식으로 순방향 구조
// PRIOR 부모 = 자식 : 자식->부모로 역방향 구조
 
1. 계층형 질의에서 사용되는 함수
SYS_CONNECT_BY_PATH = 루트데이터부터 현재 전개할 데이터까지의 경로 표시
SYS_CONNECT_BY_PATH(컬럼, 경로분리자)
CONNECT_BY_ROOT 컬럼 : 루트데이터를 표시 (뿌리)
 
2. 셀프 조인
동일 테이블 사이의 조인, FROM 절에 반드시 ALIAS 사용해야함. 같은 테이블이기 때문에.
또한 컬럼에도 ALIAS 사용. 같은 이유로.
 
SELECT E1.EMPNO 사원, E1.MGR 관리자, E2.MGR 차상위_관리자
FROM EMP E1, EMP E2
WHERE E1.MGR = E2.EMPNO



반응형

'DB > SQLD' 카테고리의 다른 글

SQL 활용 - 그룹 함수 (ROLLUP, CUBE)  (0) 2017.09.09
SQL 활용 - 서브 쿼리  (0) 2017.09.08
SQL 활용 - 집합 연산자  (0) 2017.09.06
SQL 활용 - 표준 조인  (0) 2017.09.05
SQL 기본 - join  (0) 2017.09.05