Database/Oracle

Oracle 계층구조쿼리

xProgrammer 2018. 3. 19. 09:56

스키마

http://xprogrammer.tistory.com/333


쿼리
SELECT LEVEL, CONNECT_BY_ISLEAF,
LPAD('-', 4*(LEVEL-1),'-') || ename level_ename, ENAME,
       PRIOR ename mgrname,
       empno, mgr, job 
FROM emp
-- 최상위로 사용될 행 지정
START WITH job='PRESIDENT'
-- 상위계층과 하위계층의 관계를 정의
CONNECT BY PRIOR empno=mgr
-- 같은 LEVEL 사이에서의 정렬
ORDER SIBLINGS BY ENAME

결과


쿼리

SELECT LEVEL,
CONNECT_BY_ISLEAF,
CONNECT_BY_ISCYCLE,
LPAD('-', 4*(LEVEL-1),'-') || ename ename, 
       PRIOR ename mgrname,
       empno, mgr, job 
FROM emp
START WITH empno = '7369'
CONNECT BY NOCYCLE PRIOR mgr = empno; 

결과


테스트

http://sqlfiddle.com