# TABLE JOIN PRACTICE (ANSWERS NEED TO BE SET THE BLOCK)
정답을 블록 설정으로 확인
1. EQUI 조인 사용하여 SCOTT 사원의 부서번호와 부서이름을 출력
| SELECT E.ENAME, D.DNO, D.DNAME FROM EMPLOYEES E, DEPARTMENT D WHERE E.DNO = D.DNO AND E.ENAME = 'SCOTT'; |
2. INNER JOIN과 ON 연산자를 사용하여 사원이름과 함께 그 사원이 소속된 부서이름과 지역명을 출력
| SELECT ENAME, DNAME, LOC FROM DEPARTMENT D JOIN EMPLOYEE E ON E.DNO = D.DNO; |
3. INNER JOIN과 USING 연산자를 사용하여 10번 부서에 속하는 모든 담당 업무의 고유목록을 한번 씩만 부서의 지역명을 포함하여 출력
| SELECT DNO, JOB, LOC FROM EMPLOYEE INNER JOIN DEPARTMENT USING(DNO) WHERE DNO=10; |
4. NATURAL JOIN을 사용하여 커미션을 받는 모든 사원의 이름, 부서이름, 지역명을 출력
| SELECT ENAME, DNAME, LOC FROM EMPLOYEE NATURAL JOIN DEPARTMENT WHERE COMMISSION > 0; |
5. EQUI JOIN과 WildCard를 사용하여 이름에 A가 포함된 모든 사원의 이름과 부서명을 출력
| SELECT E.ENAME, D.DNAME FROM EMPLOYEE E, DEPARTMENT D WHERE E.DNO=D.DNO AND E,ENAME LIKE '%A%'; |
6. NATURAL JOIN을 사용하여 NY에 근무하는 모든 사원의 이름, 업무, 부서번호, 부서명 출력
| SELECT ENAME, JOB, DNO, DNAME FROM EMPLOYEE NATURAL JOIN DEPARTMENT WHERE LOC = 'NEW YORK'; |
7. SELF JOIN을 사용하여 사원의 이름 및 사원번호를 관리자 이름 및 관리자 번호와 함께 출력
| SELECT A.ENAME AS "Employee", A.Manager AS "Emp#", B.ENO AS "Manager", B.ENAME AS "Mgr#" FROM EMPLOYEE A, EMPLOYEE B WHERE A.MANGER = B.ENO; |
8. OUTER JOIN, SELF JOIN을 사용하여 관리자가 없는 사원을 포함하여 사원번호를 기준으로 내림차순 정렬하여 출력
| SELECT A.ENAME AS "Employee", A.MANAGER AS "Emp#", B.ENO AS "Manager", B.ENAME AS "Mgr#" FROM EMPLOYEE A OUTER JOIN EMPLOYEE B WHERE A.MANAGER = B.ENO(+) --LEFT OUTER JOIN. A 테이블을 기준으로 합침. 관리자 없으면 그 부분은 NULL ORDER BY A.ENO DESC; |
9. SELF JOIN을 사용하여 지정한 사원의 이름, 부서번호, 지정한 사원과 동일한 부서에서 근무하는 사원을 출력
| SELECT A.ENAME AS "이름", A.DNO AS "부서번호", B.ENAME AS "동료" FROM EMPLOYEE A, EMPLOYEE B WHERE A.DNO = B.DNO AND A.ENAME = 'SCOTT' AND B.ENAME != 'SCOTT'; |
10. SELF JOIN을 사용하여 WARD 사원보다 늦게 입사한 사원의 이름과 입사일을 출력
| SELECT O.ENAME, O.HIREDATE FROM EMPLOYEE O, EMPLOYEE W WHERE O.HIREDATE > W.HIREDATE AND W.ENAME = 'WARD' ORDER BY HIREDATE; |
11. SELF JOIN을 사용하여 관리자보다 먼저 입사한 모든 사원의 이름 및 입사일을 관리자의 이름 및 입사일과 함께 출력
| SELECT O.ENAME, O.HIREDATE, M.ENAME, M.HIREDATE FROM EMPLOYEE M, EMPLOYEE O WHERE O.MANAGER = M.ENO AND O.HIREDATE <= M.HIREDATE; |
출처 : 오라클 11G 프로그래밍