계층형 쿼리
데이터 조회시 상하위 관계를 표시해 상하 관계를 파악하고자 할 때 사용한다.
주요문법
select lpad(dname,level*6,'*") 부서명
from dept2
connect by prior dcode=pdept
start with dcode=0001;
lpad(dname,level*6) 부서명
dname 컬럼을 level*6 바이트 길이로 출력하고,
왼쪽 빈자리는 *로 채워라
사장실은 최상위 레벨 1
1*6 바이트 = 6바이트
사장실 : 한글이라서 1글자에 2바이트 차지
그래서 그대로 사장실이라고 출력된다.
경영지원부는 사장실 아래의 레벨 2
2*6 바이트 = 12 바이트
왼쪽 빈자리를 lpad의 * 로 채우고, 원래 경영지원부는 그대로 출력해준다.
level 이란?
오라클의 모든 sql에서 사용할 수 있는 것,
해당데이터가 몇 번째 단계인지 의미한다.
connect by prior
각 행들이 어떻게 연결되어야 하는지 조건을 지정하는 부분이다.
dcode=pdept의 조건을 주었다.
prior?
해당 키워드가 설정되어 있는 컬럼에서 바로 이전의 데이터 값을 찾는데 사용된다.
사용시 prior 값을 어느 쪽에 주는지에 따라 결과값이 달라지므로 유의해야 한다.
예)
start with dcode=1011;
dcode가 1011인 부서부터 출발해서 이전 행 값의 pdept 코드를 찾아서 부서명을 출력한다.
'DB > oralce' 카테고리의 다른 글
sql 시험 (0) | 2014.10.15 |
---|---|
2장 내가 못푼 쿼리문 - 설명을 덧붙일 것 (0) | 2014.10.15 |
plsql cursor 연습문제 정답 (0) | 2014.10.14 |
오라클 테스트 계정 scott lock 풀기 (0) | 2014.09.29 |
rac설치 raw device (0) | 2014.09.19 |