기본 콘텐츠로 건너뛰기

181026 Hierarchical Queries

Hierarchical Queries (계층구조 쿼리)


1. 계층구조 쿼리?

 - 상위계층과 하위계층의 쿼리를 START WITH와 CONNECT BY를 이용하여 조회가능
   (in Oracle)



2. SYNTAX

1) START WITH
- 계층 질의의 루트(부모행)로 사용될 행을 지정
- 서브쿼리를 사용할 수도 있음

2) CONNECT BY
- 이 절을 이용하여 상위계층(부모행)과 하위계층(자식행)의 관계를 규정 가능
- CONNECT BY PRIOR 자식컬럼 = 부모컬럼 : 부모에서 자식으로 트리구성 (Top Down)
- CONNECT BY 자식컬럼 = PRIOR 자식컬럼 : 자식에서 부모로 트리 구성 (Bottom Up)
- CONNECT BY NOCYCLE PRIOR : NOCYCLE 파라미터를 이용하여 무한루프 방지
- 서브쿼리는 사용 불가

3) LEVEL Pseudocolumn
- LEVEL은 계층구조 쿼리에서 수행결과의 Depth를 표현하는 의사컬럼

4) ORDER SIBLINGS BY
- ORDER SIBLINGS BY절을 사용하면 계층구조 쿼리에서 편하게 정렬작업 가능

5) CONNECT BY의 실행순서
 (1) START WITH 절
 (2) CONNECT BY 절
 (3) WHERE 절


3. 계층형 쿼리 사용 예제


1
2
3
4
5
6
7
SELECT
*
FROM MA_MI_ACNT A
WHERE FACC_YYMM = '201809'
START WITH MNGM_ACNT_CD = 'D00000000'
CONNECT BY PRIOR A.MNGM_ACNT_CD = A.UPR_ACNT_CD
ORDER SIBLINGS BY PRT_SORT_SEQ
cs

관리회계 테이블 내의
2018년 09월 데이터 중에서
관리회계코드 D00000000을 기준(부모)으로 삼아
MNGM_ACNT_CD를 기준으로 Top Down 방식으로 정렬하여
계층형으로 표현