본문 바로가기
IT 이것저것

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

by 관성맨 2023. 2. 11.
반응형

오늘은 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 사용법에 대해 알아보았습니다.

반응형

댓글