본문 바로가기
Database/SQLD

계층형 쿼리

by KkingKkang 2023. 6. 1.

계층형 구조 = 상하 수직관계의 트리형태의 구조

계층형 쿼리 =  계층 구조가 적용된 데이터를 반환하는 질의어 

* Oracle만 계층형 쿼리를 지원한다

명칭 설명
LEVEL 각 계층
NODE 각 데이터
ROOT 가장 첫번째 노드
Parent Node 노드의 상위 노드
Child Node 노드의 자식 노드
Leaf 가장 아래 노드 

 

1. START WITH 구문

  • 계층의 루트로 사용될 행을 지정한다. 어떤 행을 최상위로 할 지 결정한다.
  • 서브 쿼리 가능

2. CONNECT BY

  • 연결고리를 만든다.
  • PRIOR 연산자로 계층구조를 표현할 수 있다.
    • PRIOR 자식 = 부모 (순방향)
      • 이전 LEVEL의 자식컬럼값이, 현재 행의 부모컬럼과 동일한 값이면 현재행에서 이전 LEVEL의 +1 을 세팅
    • PRIOR 부모 = 자식 (역방향)
  • 서브 쿼리 사용 불가 

3. LEVEL

  • 계층 구조 쿼리의 결과 DEPTH를 표현해준다.
  • 계층형 쿼리에만 존재하는 컬럼이다. 
SELECT 부서번호, 상위부서번호, 부서이름, level, LPAD(' ', 5*(LEVEL-1))||부서이름 AS 계층
FROM DEPT
START WITH 상위부서번호 IS NULL
CONNECT BY PRIOR 부서번호 = 상위부서번호

 

반응형

'Database > SQLD' 카테고리의 다른 글

SQLD 문제풀이 14 - 집계함수  (0) 2023.06.04
SQLD 문제 풀이 13  (0) 2023.06.03
SQLD 문제 풀이 12  (0) 2023.06.01
SQLD 문제 풀이 11  (1) 2023.05.30
SQLD 문제 풀이 10  (0) 2023.05.30

댓글