by apptention [SQL Query] [2018.02.05 14:21:32]
-- Steven King이 부서 관리자로 있는 부서이름 , 해당 부서에 근무하는 사원의 아이디 , 이름을 출력 --1 select D.department_name , E.employee_id , E.first_name || ' ' || E.last_name as full_name from (select E.department_id as department_id from employees E where E.first_name || ' ' || E.last_name in 'Steven King') E_KING , employees E , departments D where E_KING.department_id = D.department_id and E.department_id = D.department_id; --2 select D.department_name , E.employee_id , E.first_name || ' ' || E.last_name as full_name from employees E , departments D where E.department_id = D.department_id and E.department_id in (select department_id from departments where manager_id in (select employee_id from employees where first_name || ' ' || last_name in 'Steven King'));
1번 방법은 Steven King 의 부서를 가져와 사용하는데 방법이 틀렸습니다.
2번 방법처럼 Steven King 의 사원번호를 가져온뒤 이를 이용해 부서테이블의 manager_id 검색을 해야 합니다.
서브쿼리 사용보다는 조인으로 푸는 것이 좋습니다.
SELECT d.department_name , e.employee_id , e.first_name , e.last_name FROM employees m , departments d , employees e WHERE m.first_name = 'Steven' AND m.last_name = 'King' AND m.employee_id = d.manager_id AND d.department_id = e.department_id ;