오류가 난 코드 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;

    실행결과

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