티스토리 뷰
Programming/SQL
[Oracle] 계층형 질의 (START WITH, CONNECT BY) 예제 ORDER SIBLINGS BY, ORDER BY 차이
감성적인 개발자 2022. 7. 6. 23:14계층형 질의
계층형 질의를 이용해 EMP 테이블에서 사원간의 서열을 출력한다.
START WITH와 CONNECT 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;
'Programming > SQL' 카테고리의 다른 글
[Oracle] 오라클 LISTAGG 함수로 테이블 결과 가로로 출력하기, 줄바꿈 출력 예제 (0) | 2022.08.03 |
---|---|
[Oracle] 계층형 질의 CONNECT_BY_PATH 예제 (0) | 2022.07.07 |
[Oracle] 테이블 정의서(코멘트, 타입, PK, NULL여부, 디폴트 값) 조회 (0) | 2022.06.30 |
[Oracle] CREATE TABLE ORA-00907: 누락된 우괄호 (0) | 2022.06.15 |
[Oracle] 오라클 설치 버전 확인 쿼리 (0) | 2022.06.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 데이터베이스
- 백준
- CS
- 네트워크
- CSS
- JSP
- 부트스트랩
- 스프링부트
- C
- JVM
- 개발용어
- 오류
- Java
- 넥사크로
- Thymeleaf
- 이클립스
- svn
- 오라클
- 국비교육
- 환경설정
- Open API
- C++
- SQL
- HeidiSQL
- 스프링
- 프로그래머스
- 인턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함