// 계층형 쿼리, Hierarchical Query
- 오라클 전용
- 레코드 관계가 서로 상하 수직구조일 때 사용
- 서로 다른 테이블 간의 관계가 수직 구조일 대 사용
- 자기 참조를 하는 테이블에서 사용(셀프 조인)
- 트리 구조에 사용
- 사용 방법
1. 조인
2. 계층형 쿼리
~ start with절 + connect by절
-계층형 쿼리 의사 컬럼
a. prior : 자기와 연관된 부모 레코드 참고
b. level : 세대수(depth)
1. join
select
c1.name as "부품명",
c2.name as "부모부품명"
from tblComputer c1 --자식부품
inner join tblComputer c2 --부모부품
on c2.seq = c1.pseq;
2. 계층형 쿼리
select
lpad(' ', (level-1) * 2) || name as "직원명"
from tblSelf
start with seq = 1
connect by super = prior seq;
select
seq,
lpad(' ', (level-1) * 5) || name, -- 보기 편하게 .. 실제로 이런 작업을 하진 x
prior name, --부모의 name
level --depth
from tblComputer
-- start with seq = 1 -- 결과셋의 루트 지정
-- start with seq = 7
-- start with seq = (select seq from tblCommputer where name = '본체')
start with pseq is null
connect by prior seq = pseq; --현재 레코드와 부모 레코드를 연결하는 조건(조인-on 역할)
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
[Oracle] 복합키 (0) | 2023.03.24 |
---|---|
[Oracle] 데이터베이스 설계 (0) | 2023.03.23 |
[Oracle] Pseudo (0) | 2023.03.22 |
[Oracle]식별자 (0) | 2023.03.20 |
[Oracle] 시퀀스(Sequence) (0) | 2023.02.22 |