Where The Streets Have No Name

역순 계층퀴리 본문

Developement/DataBase

역순 계층퀴리

highheat 2006. 4. 13. 11:20
www.oracleclub.com


아래 강좌에서 START WITH와 CONNECT BY절을 이용해서 계층 구조로 쿼리를 해오는것을 살펴봤습니다.

이번에는 계층구조를 이용해서 역순으로 쿼리를 해오는것을 보겠습니다.

SQLPLUS scott/tiger
-- 조금 깔끔하게 보기 위해서.. 셋팅 먼저 하고요..
SQL> SET LINESIZE 100
SQL> SET PAGESIZE 100
SQL> COL ename FORMAT A20

SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job
    FROM emp
     START WITH EMPNO=7839
     CONNECT BY PRIOR empno=mgr;
ENAME                     EMPNO        MGR JOB
-------------------- ---------- ---------- ---------
KING                         7839                            PRESIDENT
JONES                  7566          7839           MANAGER
     SCOTT              7788          7566          ANALYST
         ADAMS          7876          7788          CLERK
     FORD               7902         7566           ANALYST
         SMITH          7369          7902           CLERK
    
        
위 SQL문은 EMPNO가 7839인 것을 기준으로 EMPNO와 MGR컬럼을 가지고 계층구조로 비교해서 결과값을 반환 합니다.

위 SQL문의 CONNECT BY PRIOR empno=mgr 이 부분을..한번 바꺼 볼까요..

아래처럼.. CONNECT BY empno=PRIOR mgr 이렇게 바꺼서 한번 실행해 보세요..
그럼..역순으로.. 쿼리를 해서 결과값을 반환 합니다

        
SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job
    FROM emp
    START WITH EMPNO=7369
    CONNECT BY empno=PRIOR mgr;



ENAME                     EMPNO        MGR JOB
-------------------- ---------- ---------- ---------
SMITH                      7369         7902   CLERK
FORD                   7902         7566   ANALYST
     JONES              7566         7839   MANAGER
         KING            7839                    PRESIDENT
        

위에 결과값과 비교해 보세요..

이 SQL문은 실제로..실무에서 카테고리의 Depth를 표현할때 아주 많이 사용 합니다.

컴퓨터/소프트웨어>모니터>일반CRT모니터

이런 카테고리 구조를 하나의 SQL문으로 쉽게 가져 올수가 있죠..