본문 바로가기

dev/데이터베이스

Oracle Hierarchical Query

오라클에서 한 테이블의 상속관계 row들을 계층형 쿼리로 조회할 수 있습니다.

 

다른 RDBMS에서 상속관계 row들을 조회하려면 join을 통해야 하는데

 

오라클 계층형 쿼리를 사용하면 쉽게 조회할 수 있습니다.

 

예제 테이블

 

예제 테이블을 보게 되면 PARENT_CD를 통해 row들이 계층형 관계를 갖고 있습니다.

 

예제 쿼리 1

 

예제 쿼리 1을 보게 되면

 

START WITH를 통해 조회할 데이터의 루트 노드를 지정하는데 ID가 1인 row를 루트 노드로 지정합니다.(3라인)

 

CONNECT BY PRIOR를 통해 부모 노드에 속하는 자식 노드들을 조회합니다.(4라인)

 

PRIOR 뒤에 자식 노드의 ID 컬럼이 부모 노드를 참조하면

 

부모 노드부터 자식 노드를 순뱡향 조회합니다.

 

예제 쿼리 2

 

예제 쿼리 3

 

예제 쿼리 2와 3을 보면 각각 ID가 2인 3인 노드들의 자식 노드들을 조회하고 있습니다.

 

예제 쿼리 4

 

예제 쿼리 5

 

예제 쿼리 6

 

반대로 PRIOR 뒤에서 부모 노드가 자식 ID 컬럼을 참조하면

 

자식 노드부터 부모 노드까지 역방향 조회합니다.

 

오라클 계층형 쿼리를 사용하면 상속관계 row들을 쉽게 조회할 수 있고

 

중간에 상속관계가 변경되는 경우 쉽게 수정할 수 있습니다.

'dev > 데이터베이스' 카테고리의 다른 글

Oracle FlashBack Query  (0) 2024.06.27
Oracle Pivot  (0) 2024.06.25
Dbeaver import export  (0) 2023.02.13
DBeaver query plan  (0) 2021.11.03
dbeaver ERD 조회  (0) 2021.10.30