본문 바로가기
DataBase/Oracle

JOIN/EQUI-JOIN) MULTIPLE JOIN

by 박채니 2022. 4. 19.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


MULTIPLE JOIN

- 다중 조인

- 여러 테이블을 동시에 조인 처리

- ansi 표준 문법에서는 조인 되는 순서가 매우 중요

 

사원명 / 부서명 / 근무지역을 조회

employee.name / department.dept_title / location.local_name

select
    *
from
    employee e
        left join department d on e.dept_code = d.dept_id
        left join location l on d.location_id = l.local_code;

파란색 선을 기준으로 employee 테이블, department 테이블, location 테이블 입니다.

총 3개의 entity를 join 처리해서 하나의 relation으로 생성한 것을 확인할 수 있습니다.

 

※ employee 테이블에서 dept_code가 null인 하동운/이오리 사원의 경우에는 계속해서 기준 컬럼이 null 이기 때문에 연속적으로 left join 처리를 하지 않으면 제외되므로 유의해야 합니다!!

 

[오라클 전용문법 버전]

select
    *
from
    employee e, department d, location l
where
    e.dept_code = d.dept_id(+)
    and
    d.location_id = l.local_code(+);

 

 

응용) 직급이 대리 또는 과장이면서, ASIA 지역에 근무하는 사원 조회

select
    e.emp_name,
    j.job_name,
    l.local_name
from
    employee e 
        left join job j on e.job_code = j.job_code
        left join department d on e.dept_code = d.dept_id
        left join location l on d.location_id = l.local_code
where
    j.job_name in ('대리', '과장')
    and
    l.local_name like 'ASIA%';

 

[오라클 전용문법 버전]

select
    e.emp_name,
    j.job_name,
    l.local_name
from
    employee e, department d, job j, location l
where
    e.job_code = j.job_code
    and
    e.dept_code = d.dept_id
    and
    d.location_id = l.local_code
    and
    j.job_name in ('대리', '과장')
    and
    l.local_name like 'ASIA%';