본문 바로가기

Oracle/SQL

SQL ANSI /ISO STANDARD JOIN - Left/ Right outer join

equi join 으로 join 되지 않는 데이터를 출력할때 쓰인다.

on 절을 쓴다. 

예제 65 이름, 직업,월급,부서위치 출력

(emp 에는 없고, dept 에는 존재하는 지역 boston 이출력 되어야한다.  )

1. (오라클 outer join 문법 사용)

select e.ename, e.job, e.sal, d.loc
from emp e , dept d
where e.deptno (+) = d.deptno ;

-> emp 테이블에 데이터가 부족한 것이므로 where 절의 조인문법에

부족한 쪽인 e.deptno 쪽에 (+) outer join 을 건다. 

 

2. (1999 ansi join rigth outer join 문법 사용) 

select e.ename, e.job, e.sal, d.loc
from emp e right join dept d
on (e.deptno = d.deptno);

오라클의 Outer 조인은 덜 나오는 table 에 (+) 표시를 하여 전부 다 출력하도록 쿼리를 짜지만

1999 Ansi Join 문법은 다 나오게 할 쪽이 dept table 이기 때문에 From 절에서 emp 가 left 이고 dept 가 rigth 이기 때문에 right join 을 사용해 주는것이다.


문제 316 아래의 쿼리를 ansi 문법으로 작성하시오.

select d.loc, sum(e.sal)
from emp e, dept d
where e.deptno (+) = d.deptno
group by d.loc;

-> ansi 문법 

select d.loc, sum(e.sal)
from emp e right join dept d
on (e.deptno = d.deptno)
group by d.loc;