(오라클) 계층형 쿼리
계층형 쿼리 기본양식
Select 출력할 퀄럼
From 테이블명
Where 조건
Start With 최상위 계층의 조건
Connet by [NoCycle] 계층이 연결되는 조건
Order [Siblings] by 정렬할 퀄럼
Order by를 사용할 경우 계층형 구조에 관계없이 정렬하기 때문에 문제가 된다.
그래서 정렬이 필요할 땐 ‘Order Siblings by’절을 사용해서 계층형 구조를 보존해야 한다.
계층형 쿼리의 내부 절차
1. 조인이 있으면 조인을 먼저 처리
2. START WITH 절을 참조해 최상위 계층을 선택
3. CONNECT BY 절에 명시된 구문에 따라 계층형 관계를 파악해 하위 계층을 차례로 선택.
4. WHERE조건에 맞는지 찾음
계층형 쿼리 관련 함수, 의사 퀄럼
Level : 계층형 쿼리에서만 사용할 수 있는 의사퀄럼이다. 계층형 구조에 따른 레벨
값을 자동으로 반환해준다.(값은 1부터 시작)
Connect_By_Root [퀄럼이름] : 계층형 쿼리에서 최상위 행을 반환하는 연산자이다.
Connect_By_IsLeaf : 계층형 구조에서 자신이 최하위 계층이면 1 아니면 0을
반환하는 의사 퀄럼이다.
Connect_By_IsCycle : 계층형 구조에서 하위계층으로 탐색중 무한루프에 빠지는
퀄럼이 있을 경우 1을 출력하는 의사 퀄럼이다.
Sys_Connect_By_Path(퀄럼, char1) : 최상위 계층에서 자기자신까지 연결된 경로를
출력하는 것으로 중간에 char1값이 들어간다.