데이터베이스/데이터베이스 공부

[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
반응형