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 방식으로 정렬하여
계층형으로 표현