반응형
계층 쿼리(hierarchical query)
계층 쿼리는 상하관계(부모-자식)의 트리 형식 구조이다. 기본 문법은 START WITH... CONNECT BY 형식이다.
계층 쿼리 작성 방법
SELECT 컬럼명 FROM 테이블명 WHERE 조건절 START WITH 부모조건(루트조건) CONNECT BY 부모(루트)와 자식(하위) 연결 조건;
예시쿼리
테이블이 아래와 같은 계층 구조로 이루어져 있다고 가정하자.
아래의 쿼리는 DEPT라는 가상의 테이블이 있다는 가정하에 작성되었다.
▶ DEPT 테이블
CD | PARENT_CD | DEP_NAME |
PRS | NULL | 대표이사 |
VPRS | PRS | 부사장 |
WEB | VPRS | 웹개발팀 |
AT | WEB | A사업 |
BT | WEB | B사업 |
CT | WEB | C사업 |
APP | VPRS | 앱개발팀 |
ANDT | APP | Android |
IOST | APP | iOS |
▶ 계층 쿼리 예시
--LEVEL(현재 레벨을 반환하는 컬럼) SELECT LEVEL, CD, PARENT_CD, DEP_NAME FROM DEPT START WITH PARENT_CD IS NULL --PRIOR(직전 상위노드(부모) 값을 반환) CONNECT BY PRIOR CD = PARENT_CD ORDER BY LEVEL;
▶ 결과
LEVEL | CD | PARENT_CD | DEP_NAME |
1 | PRS | NULL | 대표이사 |
2 | VPRS | PRS | 부사장 |
3 | WEB | VPRS | 웹개발팀 |
3 | APP | VPRS | 앱개발팀 |
4 | AT | WEB | A사업 |
4 | BT | WEB | B사업 |
4 | CT | WEB | C사업 |
4 | ANDT | APP | Android |
4 | IOST | APP | iOS |
반응형
'개발 > 데이터베이스' 카테고리의 다른 글
[ORACLE] INSERT ALL 구문 (0) | 2021.10.30 |
---|---|
[ORACLE] DB LINK 확인 쿼리 (0) | 2021.10.19 |
[ORACLE] MERGE (0) | 2021.10.17 |
[ORACLE] FUNCTION(함수) 만들기 및 사용하기 (0) | 2021.10.16 |
[ORACLE] INSERT, DELETE, UPDATE (0) | 2021.10.15 |