Database
조인
조인의 종류
비등가조인(Non-Equi Join)
- 조인조건을 지정할 때 조인 대상테이블에서 같은 값을 가진 데이터를 가져오는 대신, 크거나 작은 경우의 조건으로 데이터를 조회하는 조인 방식이 비등가 조인이다.
- 비등가조인 사용하기
- customer테이블과 gift테이블을 조인하여 고객별 마일리지 포인트를 조회한 후, 해당 마일리지 점수로 받을 수 있는 상품을 조회하여, 고객이름, 포인트, 받을 수 있는 선물 조회하기
SELECT c.gname, c.point, g.gname
FROM customer c, gift g
WHERE c.point >= g.g_start AND c.point <= g.g_end;
SELECT c.gname, c.point, g.gname
FROM customer c JOIN gift g
ON c.point >= g.g_start AND c.point <= g.g_end;
- student테이블과 score테이블 hakjum테이블을 조인하여 학생이름, 점수, 학점 조회하기
SELECT s.name, o.total, h.grade
FROM student s, score o, hakjum h
WHERE s.studno = o.studno
AND o.total >= h.min_point
AND o.total <= h.max_point;
SELECT s.name, o.total, h.grade
FROM student s JOIN score o
ON s.studno = o.studno
JOIN hakjum h
ON o.total >= h.min_point
AND o.total <= h.max_point;
셀프조인(Self Join)
- 하나의 테이블을 이용해서 조인을 구성하는 것이다.
- 하나의 테이블에 안에 상위데이터, 하위데이터가 있는 경우 상위데이터와 하위데이터를 서로 연관지어서 조회할 때 셀프조인이 필요하다.
- 하나의 테이블을 역할을 각각 나누어서 조인에 참여시켜야 한다
- 셀프조인 사용하기
- emp테이블에서 사원이름과 그 사원의 상사이름을 조회하기
SELECT 사원.ename, 상사.ename
FROM emp 사원, emp 상사
WHERE 사원.mgr = 상사.empno;
SELECT 사원.enme, 상사.ename
FROM emp 사원 JOIN emp 상사
ON 사원.mgr = 상사.empno
select E.employee_id, e.first_name, e.salary, s.grade
from employees E, salary_grade S
where e.salary >= s.min_salary and e.salary <= s.max_salary
order by e.employee_id;
select E.employee_id emp_id , E.first_name emp_name , M.employee_id mgr_id , M.first_name mgr_name
from employees E, employees M
where E.manager_id = M.employee_id
and e.department_id = 60;
select E.employee_id emp_id , E.first_name emp_name,
E.department_id edept_id, ED.department_name edept_name,
M.employee_id mgr_id , M.first_name mgr_name,
M.department_id mdept_id, MD.department_name mdept_name
from employees E, employees M, departments ED, departments MD
where E.department_id = 60
and E.manager_id = M.employee_id
and E.department_id = ED.department_id
and M.department_id = MD.department_id
order by emp_id asc;