-- ========
-- 계층형 쿼리
-- START WITH : 계층의 첫 단계를 어디서 시작할 것인지 대한 조건
-- CONNECT BY : 전계방향을 어디로 짤 것인가
-- [ 부모에서 자식으로 전개 : 순방향 탐색 // 자식에서 부모로 : 역방향 탐색 ]
-- CONNECT BY PRIOR 자식 = 부모 -> 순방향 탐색
-- CNONECT BY 자식 = PRIOOR 부모 -> 역방향 탐색
-- ORDER SILBINGS BY : 같은 레벨끼리의 정렬을 정함.
-- EX) 형제들 끼리는 사번 내림차로 정렬하고 싶다.
SELECT
LEVEL AS LVL,
LPAD(' ', 44*(LEVEL-1)) || emp_no || '(' || emp_nm || ')' AS "조직인원",
A.dept_cd,
B.dept_nm,
A.emp_no,
A.direct_manager_emp_no,
CONNECT_BY_ISLEAF
FROM tb_emp A
JOIN tb_dept B
ON A.dept_cd = B.dept_cd
START WITH A.direct_manager_emp_no IS NULL
CONNECT BY PRIOR A.emp_no = A.direct_manager_emp_no
ORDER SIBLINGS BY A.emp_no DESC;
SELECT
LEVEL AS LVL,
LPAD(' ', 4*(LEVEL-1)) || emp_no || '(' || emp_nm || ')' AS "조직인원",
A.dept_cd,
B.dept_nm,
A.emp_no,
a.direct_manager_emp_no
FROM tb_emp A
JOIN tb_dept B
ON A.dept_cd = B.dept_cd
START WITH A.emp_no = '1000000037'
CONNECT BY A.emp_no = PRIOR A.direct_manager_emp_no;
'데이터베이스' 카테고리의 다른 글
데이터베이스_SQL기본(서브쿼리)_ 22.06.28(day07) (0) | 2022.06.28 |
---|---|
데이터베이스_SQL기본(SELF_JOIN)_ 22.06.27(day06) (0) | 2022.06.27 |
데이터베이스_SQL기본(계층형 쿼리)_교안_ 22.06.27(day06) (0) | 2022.06.27 |
데이터베이스_SQL기본(집합연산자)_ 22.06.27(day06) (0) | 2022.06.27 |
데이터베이스_SQL기본(OUTERJOIN)_예제_ 22.06.24(day05) (0) | 2022.06.24 |