반응형
목차
테이블에 계층형 데이터가 존재할 경우 사용(조직, 사원, 메뉴등의 순환관계 등에 사용됨)
SELECT ...
[ CONNECT_BY_ISLEAF ISLEAF
FROM 테이블명
START WITH condition
CONNECT BY PRIOR condition AND condition;
-- START WITH절 | 계층구조 전개의 시작 위치를 지정하는 구문
-- CONNECT BY 절 | 다음에 전개될 자식 데이터를 지정하는 구문
-----------------------------------------------------------------
-- 계층형쿼리
------------------------------------------------------------------
--PRIOR 자식 = 부모 _ 부모 -> 자식 방향으로 전개
--PRIOR 부모 = 자식 _ 자식 -> 부모 방향으로 전개
--1. 순방향 전개
SELECT LEVEL, ENAME,
LPAD(' ', 4 * (LEVEL-1)) || EMPNO 사원,
MGR,
CONNECT_BY_ISLEAF ISLEAF
FROM EMP
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
--2. 역방향 전개
SELECT LEVEL, ENAME,
LPAD(' ', 4 * (LEVEL-1)) || EMPNO 사원,
MGR,
CONNECT_BY_ISLEAF ISLEAF
FROM EMP
START WITH EMPNO = 7876
CONNECT BY PRIOR MGR = EMPNO;
--3. 루트와 순차적 계층경로
SELECT CONNECT_BY_ROOT EMPNO 루트사원,
SYS_CONNECT_BY_PATH(EMPNO, '/') 경로,
EMPNO,
MGR
FROM EMP
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
참조 :
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dlscjf1505&logNo=220868957220
반응형
'IT > DBMS' 카테고리의 다른 글
[Oracle] 달력 만들기 (0) | 2023.04.01 |
---|---|
[SQL] update에서 case when절 사용 (0) | 2023.03.04 |
[Oracle]ORACLE 12C SQL에 추가된 새로운 기능 (0) | 2022.11.29 |
[MySQL/MariaDB] Update join... (0) | 2022.11.29 |
[Oracle] Oracle 시퀀스 생성 쿼리 (0) | 2022.11.29 |