본문 바로가기
SQL/oracle

oracle SQL - on Join (Non Equi, Self, 3 Way)

by jun.s.gi 2023. 4. 25.
728x90

1. between 연산자를 사용하여 비등가 조인을 해보자

참고로 비등가 조인에 대해서 간단히 말하자면 조인 조건에 equal 연산자가 아닌 다른 연산자를 사용하여 관계를 기술하는 조인입니다.
 
y_emp 테이블에 salary 열과 pay_grade 테이블의 low_pay, high_pay 열을 between 연산자를 사용하여 비등가조인

SELECT e.emp_name, e.salary, p.pay_level
FROM y_emp e JOIN pay_grade p
on e.salary BETWEEN p.low_pay AND p.high_pay;

 
3번 칼럼 pay_level을 출력할 때 조인 조건에 따라 다르게 출력됩니다.

쿼리 결과

 
 

2. Self Join

Self Join이란 간단히 말하면 join 키워드 양쪽 테이블이 같은 경우 Self Join입니다.
 
1) y_emp 테이블의 직원들은 각 emp_id와 그의 상사 칼럼 mgr_id가 존재합니다.
2) 사원의 이름과 해당 사원의 상사를 출력합니다.

SELECT e.emp_id 직원ID, e.emp_name 직원, m.emp_id 상사ID, m.emp_name 상사
FROM y_emp e join y_emp m
on e.mgr_id = m.emp_id;

2행을 보면 두 테이블이 같은것을 볼 수 있습니다.

 
 

3. 3 way Join

y_emp 테이블의 직원 이름과 직원이 속한 부서 이름, 부서가 어느 도시에 있는지 검색합니다.
1) 직원 이름 : y_emp 테이블에 emp_name 열
2) 부서 이름 : y_dept 테이블에 dept_name 열
3 도시 이름 : y_loc 테이블에 city 열

select e.emp_name, d.dept_name, yl.city
from y_emp e join y_dept d
on e.dept_id = d.dept_id
join y_loc yl
on d.loc_id = yl.loc_id;

칼럼명에 접두어를 붙이면 쿼리 속도가 빨라집니다.

 
 
 
 
 

728x90