: 오라클 전용 쿼리
: 레코드의 관계가 서로간의 상하 수직 구조인 경우에 사용한다.
: 자기 참조를 하는 테이블에서 사용(셀프 조인)
: 자바(= 트리 구조)
1. start with절 + connect by 절
2. 계층형 쿼리에서만 사용 가능한 의사 컬럼들
a. prior
: 자신과 연관된 부모 레코드를 참조하는 객체
b. level
: 세대수 or depth -- 루트로부터 얼마나 하위 요소인지 표현
자기 참조 테이블(계층형 쿼리 사용 ) 유무
tblSelf
홍사장
- 김부장
- 박과정
- 최대리
- 정사원
- 이부장
컴퓨터
- 본체
- 메인보드
- 그래픽카드
- 랜카드
- 메모리
- CPU
- 모니터
- 보호필름
- 모니터암
- 프린터
- A4용지
- 잉크카트리지
카테고리
- 컴퓨터용품
- 하드웨어
- 소프트웨어
- 소모품
- 운동용품
- 테니스
- 골프
- 달리기
- 먹거리
- 밀키트
- 베이커리
- 도시락
select
seq as 번호,
lpad(' ',(level -1) * 5) || name as 부품명, --루트는 들여쓰기 할 필요없어서 -1
prior name as 부모부품명,
level
from tblComputer
start with seq = 1 -- 루트 레코드 지정
connect by prior seq = pseq -- 현재 레코드와 부모 레코드를 연결하는 조건
order siblings by name asc;
-- connect_by_root : 최상위 레코드 참조
select
seq as 번호,
lpad(' ',(level -1) * 5) || name as 부품명, --루트는 들여쓰기 할 필요없어서 -1
prior name as 부모부품명,
level,
connect_by_root name,
connect_by_isleaf, -- 자식 유무
sys_connect_by_path(name,'→') as 경로--전체 경로를 리턴 시켜줄때
from tblComputer
start with pseq is null -- 루트 레코드 지정
connect by prior seq = pseq -- 현재 레코드와 부모 레코드를 연결하는 조건
order siblings by name asc;