[다중조인] 질문있습니다. 0 1 499

by 부산광어 [2020.06.12 20:05:19]


HR schema.gif (17,664Bytes)

아래 스키마에 따라 쿼리 문제를 풀려고 합니다.

-- 사원의 부서가 속한 도시(city)가 ‘Seattle’인 
-- 사원의 이름, 해당 사원의 매니저 이름, 사원 의 부서이름을 출력하시오. 
-- 이때 사원의 매니저가 없을 경우 ‘<없음>’이라고 출력하시오. 
-- 이름은 first_name만 출력하며, 
-- 사원의 이름을 오름차순으로 정렬하시오. 

1)
SELECT A.first_name, A.b, B.department_name
FROM ( 
    SELECT e1.first_name, nvl(e2.first_name,'<없음>') b, e1.department_id  
    FROM EMPLOYEES e1, EMPLOYEES e2
    WHERE e1.manager_id = e2.employee_id (+)
)A,(
    SELECT d.department_id, d.department_name
    FROM DEPARTMENTS d, LOCATIONS l
    WHERE d.location_id = l.location_id 
    AND l.city = 'Seattle'
)B
WHERE A.department_id = B.department_id 
ORDER BY 1;

2)
SELECT e1.first_name, nvl(e2.first_name,'<없음>'), d.department_name
FROM employees e1, employees e2, locations l, departments d
WHERE e1.manager_id = e2.employee_id (+)
AND e1.department_id = d.department_id 
AND d.location_id = l.location_id 
AND l.city = 'Seattle'
ORDER BY 1;

둘 다 제가 짠 쿼리입니다. 
1) 2) 이 문제에 해당하는 적절한 쿼리인지도 모르겠습니다. 
1) 2) 적절한 쿼리라면 1) 2) 보다 성능이 더 좋은 쿼리를 알 수 있을까요?
by 마농 [2020.06.15 08:23:02]

일반적으로 쿼리는 간결할수록 좋습니다.
2번 쿼리 이용하세요.
 

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