728x90
[ 계층형쿼리 작성 방법 ]
SELECT [컬럼명]
FROM [테이블명]
WHERE [ 조건절 ]
START WITH [ 최상위 조건 ]
CONNECT BY [NOCYCLE] [ PRIOR 계층형 구조 조건 ]
ORDER SIBLINGS BY [ 컬럼명 ]
1) START WITH
계층의 최상위 조건(ROOT)으로 사용될 데이터를 지정
2) CONNECT BY
상위계층과 하위계층 조건절 표시
CONNECT BY PRIOR 자식컬럼 = 부모컬럼
-> 부모에서 자식으로 트리 구성(TOP-DOWN방식)
CONNECT BY PRIOR 부모컬럼 = 자식컬럼
-> 자식에서 부모로 트리 구성(BOTTOM-UP방식)
NOCYCLE : 무한 루프 방지
3) ORDER SLBLINGS BY
사전순으로 정렬하는것이 아닌 계층구조에 최적화된 상태로 데이타 정렬
예제)
메뉴ID | 메뉴명 | 메뉴순서 | 상위메뉴ID |
0 | 메뉴 | 001 | |
1 | 조회 | 001 | 0 |
2 | 계좌조회 | 001 | 1 |
3 | 거래내역조회 | 002 | 1 |
4 | 이체 | 002 | 0 |
SELECT A.*
FROM 메뉴 A
START WITH 메뉴ID = 0
CONNECT BY PRIOR 메뉴ID = 상위메뉴ID
ORDER SIBLINGS BY A.메뉴순서
728x90