IT 이것저것

[오라클] CONNECT BY 계층형쿼리 사용법

관성맨 2023. 2. 11. 11:32
반응형

오늘은 CONNECT BY를 이용한 계층형 쿼리에 대해 알아보도록 하겠습니다.

 

 

 

 

 

 

계층형 쿼리란 무엇인가?

 

계층형 구조상하 관계의 계층적 구조로 이루어진 형태를 말합니다. 흔히 트리형태라고 생각하셔도 될 것 같은데요

예를들어보면 특정 회사의 '본부-> 부서 -> 팀 -> 파트' 처럼 계층적으로 이루어진 형태라고 보시면 됩니다.

CONNECT BY 쿼리는 계층 정보를 표현하기 위해 START WITH와 같이 쓰이며 START WITH ~ CONNECT BY 형태로 사용가능한 쿼리입니다.

 

 

 

 

 

 

 

사용법

1. START WITH 절에 시작 조건을 넣고

2. CONNECT BY 절에 연결할 조건을 넣습니다.

 

 

아래 EMP 테이블 데이터로 예를 들어보겠습니다.

 

SELECT  * FROM EMP;

EMP 테이블 예시

위 데이터는 EMP테이블의 데이터이고 계층형 쿼리를 사용하여 데이터를 표현해보면

SELECT EMPNO,JOB, ENAME, MGR
FROM EMP
START WITH JOB = 'PRESIDENT'
CONNECT BY PRIOR EMPNO = MGR;

위와 같이 계층형 쿼리를 작성하였을 때 

JOB='PRESIDENT'인 ROW를 시작점으로 하여

이전의 EMPNO와 MGR이 같은 행을 가져오는 쿼리입니다.

 

 

아래 결과값처럼 JOB = 'PRESIDENT'인 KING을 시작점으로 해서 트리형태의 계층형으로 표현되는 것을 확인하실 수 있습니다.

 

계층이기 때문에 LEVEL이 존재하고, 아래 결과값을 바탕으로 LEVEL을 확인해보면

LEVEL 1 : / KING /

LEVEL 2 : / JONES , BLAKE, CLARK /

LEVEL 3 : / SCOTT, FORD, ALLEN, WARD, MARTIN, TURNER, JAMES, MILLER /

LEVEL 4 : / ADAMS, SMITH /

이렇게 LEVEL이 구별되어 있는 것을 알 수 있습니다.

 

계층형 쿼리 결과
트리로 표현한 계층형태

 

이상으로 CONNECT BY 사용법에 대해 알아보았습니다.

반응형