티스토리 뷰

계층형 질의

계층형 질의를 이용해 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
링크
«   2024/10   »
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 29 30 31
글 보관함