국비교육 35일차 Oracle : 계층형 쿼리, ERD
select level -- level 은 start with-connect by에서만 사용
, employee_id as 사원번호
, first_name || ' ' || last_name as 사원명
, manager_id as 직속결제권자
from employees
start with employee_id = 104 -- start with employee_id = 103 -- start with employee_id = 102 -- start with employee_id = 100
connect by prior manager_id = employee_id;
/*
start with employee_id = 104
connect by prior manager_id 103 = employee_id;
104번에 있는 manager_id 의 값을 찾아서(103)을 manager_id에 넣어줘서 103번과 104번 행을 연결시켜준다.
그 다음에는 사원번호가 103번이 들어온다.
start with employee_id = 103
connect by prior manager_id 102 = employee_id;
103번 행의 manager_id(102) 가 들어온다. 103번과 102번의 연결
그 다음에는 사원번호가 102번이 들어온다.
start with employee_id = 102
connect by prior manager_id 100 = employee_id;
그 다음에는 사원번호가 100번이 들어온다.
start with employee_id = 100
connect by prior manager_id NULL = employee_id;
NULL이기 때문에 여기서 끝난다.
*/
-- !!!!! prior 다음에 나오는 manager_id 컬럼은 start with 되어지는 행의 manager_id 컬럼의 값이다. !!!!!
-- 매니저아이디와 임플로이아이디 이 순서가 중요하다.