[DB/SQLD] 계층형 조회

최대 1 분 소요

계층형조회(Connect by)

계층형조회는 oracle 데이터베이스에서 지원하는 것으로 계층형으로 데이터를 조회할 수 있다.

예를 들어 부장에서 차장, 차장에서 과장, 과장에서 대리, 대리에서 사원 순으로 트리 형태의 구조를 위에서 아래로 탐색하면서 조회하는 것이다. 물론 역방향 조회도 가능하다.

SELECT MAX(LEVEL)
FROM Limbest.EMP
START WITH MGR IS NULL
CONNECT BY PRIOR ENPNO = MGR;

Connect by는 트리 형태의 구조로 질의를 수행하는 것으로 start with구는 시작 조건을 의미하고 connect by prior는 조인 조건이다. root는 노드로부터 하위 노드의 질의를 실행한다. 계층형 조회에서 MAX(LEVEL)을 사용하여 최대 계층 수를 구할 수 있다. 즉, 계층형 구조에서 마지막 leaf node의 계층값을 구한다.

connect by 키워드

키워드 설명
LEVEL 검색 항목의 깊이를 의미. 즉 계층구조에서 가장 상위 레벨이 1이 된다.
CONNECT_BY_ROOT 계층구조에서 가장 최상위 값을 표시한다.
CONNECT_BY_ISLEAF 계층구조에서 가장 최하위를 표시한다.
SYS_CONNECT_BY_PATH 계층구조의 전체 전개 경로를 표시한다.
NOCYCLE 순환구조가 발생지점까지만 전개된다.
CONNECT_BY_ISCYCLE 순환구조 발생 지점을 표시한다.