/*****************************************************************
트리구조
START WITH
- 계층 질의의 루트(부모행)로 사용될 행을 지정 합니다..
- 서브쿼리를 사용할 수도 있다.
CONNECT BY
- 이 절을 이용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정
- 보통 PRIOR 연산자를 많이 사용
- 서브쿼리를 사용할 수 없다
PRIOR 의 위치
(1) CONNECT BY PRIOR 자식컬럼 = 부모컬럼 ==> 부모에서 자식으로 트리 구성
(2) CONNECT BY 자식컬럼 = PRIOR 부모컬럼 ==> 자식에서 부모으로 트리 구성
******************************************************************/
SELECT LEVEL,empno,ename, mgr, job
FROM emp
START WITH job = 'PRESIDENT' -- 직업이 PRESIDENT를 기준으로
CONNECT BY PRIOR empno = mgr; -- 사원(empno)과 관리자(mgr)의 관계를 계층 구조로 조회
SELECT level, LPAD(' ', 2*(level-1)) || ename ename, empno, mgr, job
FROM emp
START WITH job='PRESIDENT'
CONNECT BY PRIOR empno=mgr;
/*****************************************************************
특정 범위를 나열하여 조인하고 싶을때 CONNECT BY LEVEL 을 사용하면 편리
******************************************************************/
-- 1부터 10까지 출력
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=10;
SELECT LPAD(' ', 1*(LEVEL-1)) || LEVEL FROM DUAL
CONNECT BY LEVEL <=10;
-- 2011년 01월 01일부터 2011년 01월 31일까지 출력쿼리
SELECT TO_DATE('20110101','YYYYMMDD') + LEVEL -1
FROM DUAL
CONNECT BY LEVEL <=31;
'Study > Oracle' 카테고리의 다른 글
오라클 - NLS_DATE_FORMAT 변경 (0) | 2013.11.04 |
---|---|
오라클 User뷰 (0) | 2013.07.19 |
토드 toad 에서 select 후 그리드에서 바로 수정하기 (0) | 2013.03.05 |
오라클 실습(전문가로 가는 지름길) (0) | 2013.03.05 |
다른 DB에서 테이블 OR 데이터 복사하기 (0) | 2013.02.20 |