-
Oracle - Join 문제와 함께 파해치DataBase/Oracle 2024. 8. 14. 23:09반응형
Join
2개 이상의 테이블의 데이터를 한번에 가져올 수 있다.
사원의 사원번호(emp), 이름(emp), 근무부서(dept) 이름을 가져온다.
위의 테이블은 dept 테이블의 정보이다.
SELECT e.empno, e.ename, d.DNAME FROM EMP e , DEPT d WHERE e.deptno = d.DEPTNO;
사원번호, 이름, 근무부서를 가져오는 경우 정확한 정보를 가지고 오기 위해서 emp테이블과 dept테이블의 deptno를 확인하여 동일한 사람들의 정보만을 가져와야한다.
사원의 사원번호(emp), 이름(emp), 근무지역(dept)을 가져온다.
SELECT e.EMPNO, e.ename, d.loc FROM emp e, dept d WHERE e.deptno = d.DEPTNO;
해당 조건도 첫번째 문제와 동일하다. 두 테이블에서 deptno가 같은 조건을 걸어 정확한 정보만을 가지고 조건에 맞는 정보를 가지고 온다.
DALLAS(dept)에 근무하고 있는 사원들의 사원번호(emp), 이름(emp), 직무(emp)를 가져온다.
SELECT e.DEPTNO, e.ENAME, e.JOB FROM emp e, dept d WHERE e.DEPTNO = d.DEPTNO AND d.LOC = 'DALLAS';
dept테이블에서 LOC의 조건을 만족하며 emp와 dept 테이블에서 deptno가 동일한 정보만을 조회한다.
SALES (dept) 부서에 근무하고 있는 사원들의 급여 평균(emp)을 가져온다.
SELECT avg(sal) FROM emp e, dept d WHERE e.deptno = d.deptno AND d.DNAME = 'SALES';
dept테이블에서 dame이 SALES인 조건을 확인한 후 deptno가 동일 정보만을 가져온다.
1982년에 입사한 사원들의 사원번호(emp), 이름(emp), 입사일(emp), 근무부서이름(dept)을 가져온다.
SELECT e.EMPNO, e.ENAME, e.HIREDATE, d.DEPTNO FROM emp e, dept d WHERE e.deptno = d.deptno AND e.HIREDATE >= '1982/01/01' AND e.HIREDATE <= '1982/12/31';
where에서 추가적으로 조건을 걸어 원하는 정보를 가져올 수 있다.
각 사원들의 사원번호(emp), 이름(emp), 급여(emp), 급여 등급(salgrade)을 가져온다.
위의 테이블은 SALGRADE의 테이블이다.
SELECT e.EMPNO, e.ENAME, e.SAL, s.GRADE FROM emp e, SALGRADE s WHERE e.SAL BETWEEN s.LOSAL AND s.HISAL;
SALGRADE에서 급여에 관한 정보는 최저와 최고 급여 내역만 존재한다. 해당 급여 범위에 맞는 GRADE까지 정보를 제공한다. 여기서 범위조건을 이용하여 기존 emp테이블의 급여를 해당 범위에 비교하여 등급을 가져올 수 있다.
SALES부서(dept)에 근무하고 있는 사원의 사원번호(emp), 이름(emp), 급여 등급(salgrade)을 가져온다.
SELECT e.DEPTNO, e.ENAME, s.GRADE FROM emp e, SALGRADE s, DEPT d WHERE e.SAL BETWEEN s.LOSAL AND s.HISAL AND e.DEPTNO = d.DEPTNO AND d.DNAME ='SALES';
여기서는 총 3개의 테이블 정보가 필요하다.
우선 급여등급을 구하기 위하여 salgrade와 emp테이블을 조인하였고, SALES라는 부서에 근무하고 있는 조건도 충족하기 위하여 dept테이블의 조건도 조인하였다.
반응형'DataBase > Oracle' 카테고리의 다른 글
Oracle - 서브쿼리(Sub query) (0) 2024.08.19 Oracle - Self Join, Outer Join (0) 2024.08.15 Oracle - Having (0) 2024.08.13 Oracle - Group by (0) 2024.08.13 Oracle - 그룹함수 (avg, sum, min, max) (0) 2024.08.12