[Oracle] 오라클 BETWEEN 아우터 조인 방법
- 데이터베이스/오라클
- 2022. 11. 30.
오라클에서 아우터 조인 시 BETWEEN 연산자를 사용해야 할 경우가 있다. 일반적인 아우터 조인과 상황이 조금 틀리기 때문에 당황할 수 있지만 조인 방법을 큰 차이가 없다. BETWEEN 연사자를 사용할 경우 오라클 Outer Join과 ANSI Outer Join 방법은 아래의 예제를 참고하면 쉽게 이해할 수 있을 것이다.
목차 |
오라클 Outer Join을 사용하는 방법
WITH employees AS (
SELECT 101 AS employee_id, 'Neena' AS first_name, 'Kochhar' AS last_name, TO_DATE('2005-09-21', 'YYYY-MM-DD') AS hire_date, 'AD_VP' AS job_id FROM dual UNION ALL
SELECT 102 AS employee_id, 'Lex' AS first_name, 'De Haan' AS last_name, TO_DATE('2001-01-13', 'YYYY-MM-DD') AS hire_date, 'AD_VP' AS job_id FROM dual UNION ALL
SELECT 103 AS employee_id, 'Alexander' AS first_name, 'Hunold' AS last_name, TO_DATE('2006-01-03', 'YYYY-MM-DD') AS hire_date, 'IT_PROG' AS job_id FROM dual
), job_history AS (
SELECT 102 AS employee_id, TO_DATE('2001-01-13', 'YYYY-MM-DD') AS start_date, TO_DATE('2006-07-24', 'YYYY-MM-DD') AS end_date, 'IT_PROG' AS job_id FROM dual
)
SELECT a.employee_id
, a.first_name
, a.job_id
, b.job_id AS prev_job_id
FROM employees a
, job_history b
WHERE a.employee_id = b.employee_id(+)
AND a.hire_date BETWEEN b.start_date(+) AND b.end_date(+)
![]() |
위의 예제를 보면 BETWEEN 절에서 아우터 조인 대상 테이블의 칼럼에 (+)를 붙여주면 정상적으로 아우터 조인이 된다. 예제 쿼리문에서 아우터 조인(+)을 제거하고 실행 보면 정확한 차이를 알 수 있을 것이다.
ANSI Outer Join을 사용하는 방법
WITH employees AS (
SELECT 101 AS employee_id, 'Neena' AS first_name, 'Kochhar' AS last_name, TO_DATE('2005-09-21', 'YYYY-MM-DD') AS hire_date, 'AD_VP' AS job_id FROM dual UNION ALL
SELECT 102 AS employee_id, 'Lex' AS first_name, 'De Haan' AS last_name, TO_DATE('2001-01-13', 'YYYY-MM-DD') AS hire_date, 'AD_VP' AS job_id FROM dual UNION ALL
SELECT 103 AS employee_id, 'Alexander' AS first_name, 'Hunold' AS last_name, TO_DATE('2006-01-03', 'YYYY-MM-DD') AS hire_date, 'IT_PROG' AS job_id FROM dual
), job_history AS (
SELECT 102 AS employee_id, TO_DATE('2001-01-13', 'YYYY-MM-DD') AS start_date, TO_DATE('2006-07-24', 'YYYY-MM-DD') AS end_date, 'IT_PROG' AS job_id FROM dual
)
SELECT a.employee_id
, a.first_name
, a.job_id
, b.job_id AS prev_job_id
FROM employees a
LEFT OUTER JOIN job_history b
ON a.employee_id = b.employee_id
AND a.hire_date BETWEEN b.start_date AND b.end_date
![]() |
ANSI 아우터 조인을 사용하면 헷갈리지 않고 자연스럽게 쿼리문을 작성할 수 있다. ANSI 조인과 오라클 조인을 비교하여 두 가지 방식 모두 정확한 사용법을 익혀두는 것이 좋다.
[Oracle] 오라클 아우터 조인 사용법
오라클 쿼리문 작성이 익숙하지 않을 때 가장 헷갈렸던 부분이 아우터 조인(Outer Join)이다. 오라클 아우터 조인 시 대상 컬럼에 "(+)" 기호를 붙여서 조인을 하면된다. 아우터 조인을 사용하는 이
gent.tistory.com
[Oracle] 오라클 조인 방법 쉽게 설명
오라클에서 조인을 할 때 오라클 조인(Oracle Join)과 안시 조인(ANSI JOIN)을 사용할 수 있다. 오라클 9i 까지는 오라클 조인만 사용할 수 있으며, 오라클 10g부터는 안시 조인을 추가로 사용할 수 있다.
gent.tistory.com
[Oracle] 여러개 테이블 ANSI JOIN 방법
오라클 9i 버전부터 ANSI JOIN을 지원하기 시작했다. 그렇지만 아직까지 오라클 데이터베이스를 사용하는 많은 시스템에서 ANSI JOIN을 사용하지 않고 오라클 방식의 조인을 사용하여 쿼리문을 작성
gent.tistory.com