[ORACLE] 계층구조 쿼리 START WITH
예제 -- LEVEL컬럼으로 depth를 알수 있다. -- JONES의 관리자는 KING 이며, SCOTT의 관리자는 JONES 이다. -- 상/하의 계층 구조를 쉽게 조회 할 수 있다.
SELECT LEVEL, empno, ename, mgr FROM emp START WITH job = 'PRESIDENT' CONNECT BY PRIOR empno = mgr;
LEVEL EMPNO ENAME MGR ------ -------- -------- ------- 1 7839 KING 2 7566 JONES 7839 3 7788 SCOTT 7566 4 7876 ADAMS 7788 3 7902 FORD 7566 4 7369 SMITH 7902
|
계층구조 쿼리 Synctax
START WITH
- 계층 질의의 루트(부모행)로 사용될 행을 지정 한다.
- 서브쿼리를 사용할 수도 있다.
CONNECT BY
- 이 절을 이용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정 할 수 있다.
- PRIOR 연산자와 함께 사용하여 계층구조로 표현할 수 있다.
- CONNECT BY PRIOR 자식컬럼 = 부모컬럼 : 부모에서 자식으로 트리구성 (Top Down)
- CONNECT BY PRIOR 부모컬럼 = 자식컬럼 : 자식에서 부모로 트리 구성 (Bottom Up)
- CONNECT BY NOCYCLE PRIOR : NOCYCLE 파라미터를 이용하여 무한루프 방지
- 서브쿼리를 사용할 수 없다.
LEVEL Pseudocolumn
- LEVEL은 계층구조 쿼리에서 수행결과의 Depth를 표현하는 의사컬럼이다.
ORDER SIBLINGS BY
- ORDER SIBLINGS BY절을 사용하면 계층구조 쿼리에서 편하게 정렬작업을 할 수 있다.
CONNECT BY의 실행순서는 다음과 같다.
- 첫째 START WITH 절
- 둘째 CONNECT BY 절
- 세째 WHERE 절 순서로 풀리게 되어있다.
출처 : 구루비 였던거 같음
http://www.gurubee.net/lecture/1300
'Development > SQL' 카테고리의 다른 글
[ORACLE] 사용자가 사용하고 있는 모든 테이블 제거하기. (0) | 2024.08.02 |
---|---|
[MySql] MySql TimeZone 확인 (0) | 2024.08.02 |
[MySql] MySql Community Server 5.7.21 설치 (4) | 2018.01.27 |
인덱스 넘버링 (0) | 2017.09.26 |