더북(TheBook)

오류가 난 코드 9-15의 서브쿼리 바로 앞에 LATERAL 키워드를 추가했습니다. 이렇게 하니 서브쿼리의 WHERE 절에서 메인쿼리의 FROM 절에 있는 테이블의 칼럼을 참조합니다. LATERAL 덕분에 조인 조건을 서브쿼리 안에서도 사용할 수 있게 됐습니다.

코드 9-16은 다음과 같이 INNER JOIN 구문으로 바꿔 쓸 수도 있습니다.

코드 9-17

SELECT a.dept_no, a.dept_name,
       mng.emp_no, mng.first_name, mng.last_name
  FROM departments a
 INNER JOIN LATERAL
       (SELECT b.dept_no, b.emp_no, c.first_name, c.last_name
          FROM dept_manager b, employees c
         WHERE b.emp_no = c.emp_no
           AND SYSDATE() BETWEEN b.from_date AND b.to_date
           AND a.dept_no = b.dept_no
       ) mng
 ORDER BY 1;

실행결과

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.