[계층형 쿼리문] 질문있습니다. 0 2 1,763

by 부산광어 [2020.05.08 12:29:19]


<EMPLOYEES>

EMPLOYEE_ID LAST_NAME MANAGER_ID SALARY
100 King   24000
101 Kochhar 100 17000
102 De Haan 100 17000
103 Hunold 102 9000
104 Ernst 103 6000
105 Austin 103 4800
106 Pataballa 103 4800
107 Lorentz 103 4200
108 Grennberg 101 12000
109 Faviet 108 9000

 

<SQL>

WITH WITH_TAB(last_name, EMP_ID, MGR_ID, sum_salary)
as
(
    select last_name, employee_id, manager_id, salary
    from employees
    where manager_id is null
    union all
    select a.last_name, a.employee_id, a.manager_id, a.salar+b.sum_salary
    from employees a, with_tab b
    where b.emp_id = a.manager_id
)

select sum_salary 
from with_tab
where emp_id = 105;

 

<결과> 54800 

 

WITH_TAB 선언부부터 이해가 잘 가지 않습니다. 아직 정의되지 않은 WITH_TAB 선언부 내부에서 다시 WITH TAB 선언부를 조인한다는 부분이 어려운 것 같습니다. 

자세하게 동작 원리를 조금 알려주실 수 있을까요?..

by 마농 [2020.05.08 13:35:10]

by 부산광어 [2020.05.08 19:18:51]

진심으로 감사합니다! 

오라클 11g 에서 나온 계층형 쿼리 다른 방식이였네요 ㅠㅠ

헤매고 있었는데 덕분에 이해가 완전히 되었습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입