Database/SQL

[SQLD] 계층형 쿼리

서리★ 2024. 5. 15. 18:15

계층형 쿼리의 내장 함수

1. LEVEL

2. CONNECT_BY_ISLEAF

3. CONNECT_BY_ISCYCLE

4. SYS_CONNECT_BY_PATH

5. CONNECT_BY_ROOT

6. NOCYCLE

 

 

START WITH ~ CONNECT BY

SELECT * FROM TABLE START WITH 컬럼 = 값 CONNECT BY 컬럼 = PRIOR 컬럼;

 

1. START WITH 컬럼 = 값

위 컬럼 = 값을 만족하는 레코드에서 시작

 

2. CONNECT BY 컬럼 = PRIOR 컬럼;

위의 레코드에서 PRIOR 컬럼의 값이 부모가 되어 자식을 찾아 다음 레코드를 연결짓는다.

 

CONNECT BY 컬럼 PRIOR 자식 컬럼 = 부모 컬럼 : 순방향

CONNECT BY 컬럼 PRIOR 부모 컬럼 = 자식 컬럼 : 역방향

 

*계층형 쿼리 순서 나열 시

A

ㄴ B

l    ㄴ D

ㄴ C

인 경우에  나열하면 A B D C 순이다.

CONNECT BY 순으로 자식을 찾다보면 A B C D로 보이겠지만 계층으로 나누어야 해서 A B D C 순이 맞다

 

PRIOR 키워드는 CONNECT BY, SELECT, WEHERE 절에서 사용할 수 있다.

 

*질의 순서 : 계층 구조 작성 후, 조건 필터링(반대 순서가 아님!!!)

쿼리가 아래와 같을 경우 순서는...

WHERE 조건

START WITH ~

CONNECT BY ~