프로그래밍/오라클

(오라클) 계층형 쿼리

길가다주운노트 2016. 7. 10. 19:05

계층형 쿼리 기본양식

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 : 계층형 구조에서 자신이 최하위 계층이면 아니면 0

                                    반환하는 의사 퀄럼이다.

 

Connect_By_IsCycle : 계층형 구조에서 하위계층으로 탐색중 무한루프에 빠지는

                                    퀄럼이 있을 경우 1 출력하는 의사 퀄럼이다.

 

Sys_Connect_By_Path(퀄럼, char1) : 최상위 계층에서 자기자신까지 연결된 경로를

                                                            출력하는 것으로 중간에 char1값이 들어간다.