데이터베이스/데이터베이스 공부
[ORACLE] 계층형 쿼리(START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY)
아밍나
2022. 8. 26. 23:57
728x90
계층형 쿼리
테이블의 레코드들이 부모, 자식 관계(상하 관계)를 이룰 때, 레코드를 수직적 구조로 가져오기 위해 사용되는 SQL
1) START WITH ... CONNECT BY 절
SELECT [컬럼]
FROM [테이블]
START WITH [최상위 조건]
CONNECT BY [NOCYCLE][PRIOR 계층형 구조 조건];
- START WITH
계층 구조 전개의 시작위치[부모(루트) 노드] 지정.
→ 루트 노드의 LEVEL 값은 1.
- CONNECT BY
부모와 자식노드들 간의 관계 명시.
CONNECT BY 실행 순서
START WITH → CONNECT BY → WHERE
- PRIOR
- CONNECT BY PRIOR 자식 = 부모: 부모 → 자식으로 전개하는 순방향 전개.
- CONNECT BY PRIOR 부모 = 자식: 자식→ 부모로 전개하는 역방향 전개.
- CONNECT BY NOCYCLE PRIOR: NOCYCLE 파라미터를 이용한 무한 루프 방지.
- CONNECT BY 절에서만 사용되는 것은 아니다. SELECT, WHERE 절에서도 사용할 수 있다.
2) ORDER SIBLINGS BY
형제 노드(동일 LEVEL) 사이에서 정렬 수행.
728x90
반응형