계층검색(hierarchical query)
하향식 방식(top-down)
start with —시작점, 시작해야할 조건을 생성
connect by prior; —연결고리 조건
select employee_id, manager_id
from employees
start with employee_id=101
connect by prior employee_id=manager_id;
—————————————>
⇒ 사원번호 101번을 매니저 번호로 갖고 있는 사람을 찾고,
그 사원의 번호를 매니저번호로 갖고 있는 사람을 찾음.
연쇄적으로 찾음. 자식을 먼저 찾고 없으면 그 다음에 형제를 찾음.
상향식 방식(bottom up)
start with — 시작점, 시작해야할 조건을 생성
connect by ... prior; —연결고리 조건
select employee_id, manager_id
from employees
start with employee_id=101
connect by employee_id= prior manager_id;
<—————————————
select level, lpad(' ',2*level-2,' ') || last_name --계층 구분
from employees
where employee <> 101 --101번 사원만 제외 , 특정한 행만 제외
order siblings by --계층 검색된 내용을 정렬할 때 사용. 위치표기법은 사용할 수 없음.
and employee_id != 101 ; --101번 사원 조직을 전부 제거, 분기 제거
[문제89] select문을 이용해서 1~100 출력해주세요.
select level
from dual
connect by level <= 100;
[문제90] select문을 이용해서 2단을 출력해주세요.
2단
2 * 1 = 2
2 * 2 = 4
...
2 * 9 = 18
select '2 * ' || level || ' = ' || 2*level as "2단"
from dual
connect by level <= 9;
[문제91] select문을 이용해서 2단~9단까지 출력해주세요.
select '2 * ' || level || ' = ' || 2level as "2단",
'3 * ' || level || ' = ' || 3level as "3단",
'4 * ' || level || ' = ' || 4level as "4단",
'5 * ' || level || ' = ' || 5level as "5단",
'6 * ' || level || ' = ' || 6level as "6단",
'7 * ' || level || ' = ' || 7level as "7단",
'8 * ' || level || ' = ' || 8level as "8단",
'9 * ' || level || ' = ' || 9level as "9단"
from dual
connect by level <= 9;
select dan || ' * ' || num || ' = ' || dan*num 구구단
from (select level+1 dan
from dual
connect by level <=8),
(select level num
from dual
connect by level <=9);
'SQL' 카테고리의 다른 글
[Oracle] 테이블 생성/추가/삭제 (0) | 2021.12.31 |
---|---|
[Oracle] 유저 관리 - 유저생성, 권한부여, 권한변경, 유저삭제 (0) | 2021.12.31 |
[Oracle] 집합연산자 (0) | 2021.12.29 |
[Oracle] 다중열 서브쿼리, scalar subquery (0) | 2021.12.28 |
[Oracle] INLINE VIEW (0) | 2021.12.27 |