상세 컨텐츠

본문 제목

계층적 질의

DataBase/Oracle

by H_Develop 2022. 6. 9. 19:45

본문

계층적으로 데이터 상호간의 관계를 표시 LEVEL로 표시

 

select LPAD(employee_id, level*3, '-') AS EMP_LEVEL, employee_id, last_name, manager_id 
from employees
START WITH employee_id = '100'
CONNECT BY PRIOR employee_id = manager_id 

EMP_LEVEL		EMPLOYEE_ID	LAST_NAME	MANAGER_ID
100				100			King	 
---101			101			Kochhar		100
------108		108			Greenberg	101
---------109	109			Faviet		108
---------110	110			Chen		108
---------111	111			Sciarra		108
---------112	112			Urman		108
---------113	113			Popp		108
------200		200			Whalen		101
------203		203			Mavris		101
------204		204			Baer		101
------205		205			Higgins		101
---------206	206			Gietz		205

// lpad(employee_id, level*3, '-')는 employee_id를 나타내며 
// level*3를 사용하여 부하직원을 표시할 때 3자리 씩 표현.
// 3자리 씩 표현을 '-' 하이픈으로 표시한다.
// start whith employee_id = '100'으로 100번부터 시작을하며,
// connect by prior로 계층간의 관계를 정의한다.
// 100번 부하직원은 모두가 있고 100번 부하직원인 101번의 부하직원은 108, 200,200,203..이며,
// 108번의 부하직원은 109,110,111,112,113이 있다.
// manager_id로 직장 상사를 찾을 수 있지만, lpad를 사용함으로써, 편리하게 눈으로 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'DataBase > Oracle' 카테고리의 다른 글

View 가상테이블  (0) 2022.06.12
Transaction, lock, Rollback, View, Compile  (0) 2022.06.09
GROUP BY 함수 확장(group by rollup, group by cube)  (0) 2022.06.09
집합 연산자 (합집합, 차집합, 교집합 등)  (0) 2022.06.08
SUB QUERY  (0) 2022.06.08

관련글 더보기