database/oracle

JOIN

labj 2012. 3. 21. 20:47

- EQUIJOIN

 

- NON EQUIJOIN
사원 조회시에 급여등급이 나오도록 조인한다.
SELECT e.empno, e.ename, e.sal, s.grade FROM emp e, salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;

 

- OUTER JOIN
dept에 새로운 부서가 생겼는데 EQUIJOIN 했을 경우는 조회가 안된다.
emp에 사원이 배치 안 되었더라도 부서는 나오도록 할 경우에 사용한다.
정보가 부족한 쪽에 (+)를 붙여서 사용한다. 
IN 연산자, OR 연산자 사용 못한다.
SELECT e.empno, e.ename, d.deptno, d.dname FROM emp e, dept d
WHERE e.deptno(+) = d.deptno
 
- SELF JOIN
자신과 JOIN 해서 사용한다.
MGR 내 상관이 누구다를 가리킨다
자신에게 상관이 있는 사원 테이블, 자신에게 부하가 있는 상관 테이블을 조인한다.
이 경우에 SELF JOIN을 이용한다.
SELECT w.ename worker, m.ename manger 
FROM emp w, emp m
WHERE w.mgr = m.empno

자기위에 상관이 하나도 없는 사람도조회하기 위해서 WHERE w.mgr = m.empno(+) 사용
SELECT w.ename worker, m.ename manger
FROM emp w, emp m
WHERE w.mgr = m.empno(+)

 

- Cartesian Product
조인 조건이 생략되거나 잘못된 경우 발생한다


'database > oracle' 카테고리의 다른 글

TABLESPACE 이해  (0) 2012.03.21
Sub Query  (0) 2012.03.21
그룹 결과 제한 - HAVING 사용  (0) 2012.03.21
오라클에서 쿼리 실행결과 저장하기 방법  (0) 2012.03.21
SQL Plus 기본 명령  (0) 2012.03.21