■ 계층형 쿼리(Hierarchical Query)
- 엔터티를 순환관계 데이터 모델(조직도, 사원, 메뉴 등)로 설계할 경우, 계층형 데이터가 발생
- 계층형 데이터(한 테이블에 계층적으로 상/하위 데이터)가 존재할 경우, 원하는 데이터를 조회하기 위해 계층형 쿼리 사용
- 부모와 자식 관계에 깊이(Level)를 부여하여, 조회하는 쿼리(즉, 부모 노드없는 토드가 최상위 노드에 위치한 형태)
- 오라클(Oracle) 환경 지원
- 계층형 쿼리 활용 예시
→①START WITH절 : 계층 구조 전개의 시작 위치를 지정하는 구문
→②CONNECT BY절 : 다음에 전개될 자식 데이터를 지정하는 구문
→③PRIOR 조건 : 순방향/역방향 전개
SELECT 칼럼명
FROM 테이블명
WHERE 조건
START WITH 조건
CONNECT BY PRIOR 조건
■ 순방향 전개
- 전개 : 부모 → 자식 방향
- 형태 : PRIOR 자식 = 부모
SELECT
CONNECT_BY_ROOT EMPNO 루트사원,
SYS_CONNECT_BY_PATH(EMPNO, '/') 경로,
EMPNO,
MGR
FROM
EMP
START WITH
MGR IS NULL
CONNECT BY
PRIOR EMPNO = MGR;
■ 역방향 전개
- 전개 : 자식 → 부모 방향
- 형태 : PRIOR 부모 = 자식
SELECT
CONNECT_BY_ROOT EMPNO 루트사원,
SYS_CONNECT_BY_PATH(EMPNO, '/') 경로,
EMPNO,
MGR
FROM
EMP
START WITH
MGR IS NULL
CONNECT BY
PRIOR MGR = EMPNO;