티스토리 뷰

계층형 질의

계층형 질의를 이용해 EMP 테이블에서 사원간의 서열을 출력한다.

START WITHCONNECT BY 절을 이용하면 LEVEL을 출력할 수 있다. START WITH절은 루트노드를 지정하며 CONNECT BY 절은 부모노드와 자식노드 간의 관계를 지정한다.

SELECT rpad(' ', (level-1)*3) || ename as employee
     , level
     , sal
     , job
FROM EMP
START WITH ename='KING'
CONNECT BY PRIOR empno = mgr;

 

CONNECT BY 조건

BLAKE와 이를 부모노드로 가진 사원을 제외하여 노드를 구성한다.

CONNECT BY PRIOR empno = mgr AND ename != 'BLAKE';


START WITH 

루트노드를 지정해준다. 같은 쿼리라도 루트노드를 지정해주는 것에 따라 출력결과는 달라진다.

KING이 아닌 JONES를 루트노드로 하면 JONES 하위 노드들만 출력된다.

START WITH ename='JONES'

 

CONNECT BY

부모 노드와 자식노드간의 관계를 지정한다. 왼쪽부모노드가 되는 컬럼을 오른쪽 자식 노드가 되는 컬럼을 지정한다.

CONNECT BY PRIOR empno = mgr;

 

정렬 : ORDER SIBLINGS BY 와 ORDER BY

ORDER SIBLINGS BY를 이용하면 루트노드와 자식노드 간의서열을 유지하면서 정렬이 이루어진다.

ORDER SIBLINGS BY sal ASC;
ORDER SIBLINGS BY sal DESC;

반면, ORDER BY 절을 그대로 사용하게되면 루트노드와 자식노드간의 서열을 무시하고 정렬이 이루어진다.

ORDER BY sal ASC;
ORDER BY sal DESC;

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함