START WITH와 CONNECT BY절을 이용해서 계층 구조로 쿼리
http://loveu.oranc.co.kr/bbs/zboard.php?id=skill&page=2&sn1=&divpage=1&category=2&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=49
http://loveu.oranc.co.kr/bbs/zboard.php?id=skill&page=2&sn1=&divpage=1&category=2&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=49
아래 강좌에서 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문으로 쉽게 가져 올수가 있죠.. |