티스토리 뷰
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
- 스프링부트
- 넥사크로
- Java
- 부트스트랩
- CS
- CSS
- 오류
- Open API
- HeidiSQL
- 인턴
- C
- 국비교육
- 프로그래머스
- 개발용어
- 스프링
- 이클립스
- 백준
- SQL
- Thymeleaf
- C++
- 오라클
- JSP
- 데이터베이스
- JVM
- 환경설정
- svn
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함