본문 바로가기
DataBase

[Oracle] 오라클 계층형 쿼리

by 제2의지니 2021. 11. 10.

1.  계층형 쿼리란?

트리 형태의 구조로 이루어진 형태를 말한다. 예를 들면 회사 부서 또는 게시판 카테고리 등이 있다.

 

2. 계층형 쿼리 문법 

SELECT *
FROM [테이블]
WHERE [조건]
START WITH [최상위 조건]
CONNECT BY [NOCYCLE][PRIOR 계층형 구조 조건]

 

3. 계층형 쿼리 예제

CREATE TABLE CATEGORY ( 
CATEGORY_ID NUMBER NOT NULL, -- 카테고리 ID
PARENT_CATEGORY_ID NUMBER, -- 상위 카테고리 ID
CATEGORY_NM VARCHAR2(100) NOT NULL, -- 카테고리이름 
PRIMARY KEY (CATEGORY_ID) );

- 데이터 예제

4. 쿼리

SELECT CATEGORY_ID, PARENT_CATEGORY_ID , LPAD(' ' , 3 * (LEVEL-1)) || CATEGORY_NM "CATEGORY_NM", LEVEL
FROM CATEGORY
START WITH CATEGORY_ID IS 0 -- 시작조건
CONNECT BY PRIOR CATEGORY_ID = PARENT_CATEGORY_ID -- 연결조건

- START WITH : 계층형 구조에서 최상위 계층의 로우를 식별하는 조건을 작성하여 이 조건에 맞는 로우부터 시작해 계층형 구조를 만들어낸다.

- CONNECTION BY : 계층형 구조가 어떤 식으로 연결되는 지를 작성하는 부분이다.

PRIOR 이전이라는 의미로 해석하면 된다.

- level은 계층형 구조의 레벨값이다. 

결과

댓글