equi 조인으로 볼 수 없는 데이터 값을 출력
이름, 부서위치 출력 그리고 부서위치쪽에 DEPT 테이블에는 존재하는데 혹시 출력 안된 부서위치가 있는지 찾아보시오.
select e.ename, d.loc
from emp e, dept d
where e.deptno = d.deptno ;
'BOSTON' 이 출력 되지 않는다.
emp 테이블에 부서번호 40 번이 없어서 조인이 전부 다 실행되지 않았기 때문에 BOSTON이 출력되지 않은것 입니다.
따라서 위의 조인결과에서는 BOSTON 이 없다 생각할 수 있으나, 실제로는 BOSTON 의 위치는 존재하나 사원만 없을 뿐이다.
그렇다면 조인 되지않은 결과도 출력 하려면 OUTER 조인을 사용해아한다.
select e.ename, d.loc
from emp e, dept d
where e.deptno (+) = d.deptno ;
이 OUTER JOIN 의 (+) 의 위치는 , emp 와 detp 결과중 결과가 모자라는 쪽에 붙여준다.
emp table 에 부서번호 40 번이 없어서 boston 이 출력 되지 않은것 이므로 e.dept 에 (+) 를 붙여준다.
만약 데이터가 방대해서 어디 쪽이 모자란지 확인 할 수 없을때에는 ?
select distinct deptno from dept;
select distinct deptno from emp;
쿼리로 확인을 한다
양쪽에 outer join 은 쓰지 못한다 (+)
뒤에서 full outer join 배울것임
문제 298 부서위치, 부서위치별 토탈월급 출력하며 조인안된 boston 도 출력
select d.loc, sum(e.sal)
from emp e, dept d
where e.deptno (+) = d.deptno
group by d.loc;
'Oracle > SQL' 카테고리의 다른 글
SQL ANSI /ISO STANDARD JOIN - ON 절 이용 (0) | 2021.11.25 |
---|---|
SQL Oracle Join - Self join 자기 자신과 조인 (0) | 2021.11.22 |
SQL Oracle Join - NON Equi join 여러 테이블 조인 (컬럼간 연결고리 = X) (0) | 2021.11.22 |
SQL Oracle Join - Equi join 여러 테이블 조인 (공통컬럼 O) (0) | 2021.11.22 |
SQL fetch first ___ rows only - 출력되는 행 제한시키기 (0) | 2021.11.22 |