더북(TheBook)

그리고 메인쿼리에 있는 departments 테이블과 mng 파생 테이블을 메인쿼리에서 내부 조인합니다. mng 파생 테이블의 칼럼은 mng.dept_no처럼 별칭.칼럼명 형태로 참조할 수 있어서 WHERE 절에 a.dept_no = mng.dept_no라는 조인 조건을 기술합니다. 메인쿼리의 SELECT 절에서는 mng 파생 테이블에 담긴 부서 관리자의 사번(mng.emp_no)과 이름(mng.first_name, mng.last_name)을 명시합니다.

이런 방식으로 메인쿼리에서 파생 테이블을 다른 일반 테이블처럼 사용할 수 있습니다. 그런데 파생 테이블을 사용할 때 몇 가지 주의할 점이 있습니다.

파생 테이블은 별칭을 반드시 명시해야 합니다.

파생 테이블을 구성하는 서브쿼리의 SELECT 절에 명시한 칼럼만 메인쿼리에서 참조할 수 있으며, 칼럼에 별칭을 사용하면 별칭으로 참조할 수 있습니다.

메인쿼리의 FROM 절에는 1개 이상의 파생 테이블을 사용할 수 있습니다.

사실 코드 9-10은 파생 테이블을 사용하지 않고 조인을 사용해도 같은 결과를 얻을 수 있습니다. 다음과 같이 서브쿼리 대신 departments, dept_manager, employees 테이블을 조인하면 됩니다.

코드 9-11

SELECT a.dept_no, a.dept_name, b.emp_no, c.first_name, c.last_name
  FROM departments a, dept_manager b, employees c
 WHERE a.dept_no = b.dept_no
   AND b.emp_no = c.emp_no
   AND SYSDATE() BETWEEN b.from_date AND b.to_date
 ORDER BY 1;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.