DB/SQL

[Oracle]계층형 쿼리 구조(Hierarchy Query) 개념편

리오토리 2023. 2. 2. 10:23

 

 

 

계층구조란?

부모, 자식 간의 수직관계를 트리 구조 형태로 보여주는 쿼리

 

 

 

 

 

1. START WITH 절

트리 구조의 최상위 행의 시작 위치 지정

 

ex. START WITH (테이블명) IS NULL // 시작위치 지정

* IS NULL : 상위를 IS NULL로 설정하면 해당 테이블이 최상위레벨이 된다

 

 

 

 

2. CONNECT BY 절

부모, 자식의 관계를 지정

하위 데이터 PRIOR 사용해서 지정

 

PRIOR

CONNECT BY절 사용되며 PRIOR에 지정된 컬럼이 맞은편 컬럼을 찾아감

 

01. CONNECT BY PRIOR 자식컬럼  = 부모컬럼

부모 → 자식 순방향 전개

상위 = PRIOR 하위

 

ex. connect by (부모테이블) = (자식테이블)  //자식데이터 지정

 

02. CONNECT BY PRIOR 부모컬럼 = 자식컬럼

자식 → 부모 역방향 전개

하위 = PRIOR 상위

 

 

 

 

 

3. ORDER SIBLINGS 절

계층형 쿼리에서 정렬을 수행

 

계층구조를 그대로 유지하면서 동일 상위계층을 가진 하위계층 끼리 

정렬기준을 준다.

즉, 걔층내에서 정렬 방법

 

*ORDER BY로 SORT 할 경우, 계층구조가 흐트러진다

 

ex. ORDER SIBLINGS BY (테이블명);

 

 

 

 

 

 

 

 

 

최상위 : 회사 

개발부문

      상위 : 회사

      회사 : 개발부, 부서연구소

영업부문

      상위 : 회사 

      히위 : 해외영업부, 국내영업부, 영업기획팀

 

 

 

 

출처

https://dev-cini.tistory.com/47 계층형쿼리 실습 예시  (참고★)

https://goldswan.tistory.com/36

 

 

 

 

 

'DB > SQL' 카테고리의 다른 글

[SQL] SQL 문법정리01_select/where/and,or,not/order by  (0) 2023.01.19