반응형

다중조인

3개 이상의 테이블 조인 시 사용하며 순서가 중요하다

--직급이 대리이면서 ASIA 지역에 근무하는 직원들
--사번, 사원명, 직급명, 부서명, 근무지역명, 급여 조회

--오라클 전용 구문
SELECT E.EMP_ID 사번, E.EMP_NAME 사원명, J.JOB_NAME 직급명, D.DEPT_TITLE 부서명, N.NATIONAL_NAME 근무지역명, E.SALARY 급여
FROM EMPLOYEE E, JOB J, DEPARTMENT D, LOCATION L, NATIONAL N
WHERE E.JOB_CODE = J.JOB_CODE
AND   E.DEPT_CODE = D.DEPT_ID
AND   D.LOCATION_ID = L.LOCAL_CODE
AND   L.NATIONAL_CODE = N.NATIONAL_CODE
AND   J.JOB_NAME = '대리'
AND   L.LOCAL_NAME LIKE 'ASIA%';

--ANSI 구문
SELECT E.EMP_ID 사번, E.EMP_NAME 사원명, J.JOB_NAME 직급명, D.DEPT_TITLE 부서명, N.NATIONAL_NAME 근무지역명, E.SALARY 급여
FROM EMPLOYEE E
LEFT JOIN JOB J ON(E.JOB_CODE=J.JOB_CODE)
LEFT JOIN DEPARTMENT D ON(E.DEPT_CODE=D.DEPT_ID)
LEFT JOIN LOCATION L ON(D.LOCATION_ID=L.LOCAL_CODE)
LEFT JOIN NATIONAL N ON(L.NATIONAL_CODE=N.NATIONAL_CODE)
WHERE J.JOB_NAME = '대리'
AND   L.LOCAL_NAME LIKE 'ASIA%';

--70년대생이면서 여자이고, 성이 전씨인 직원들
--사원명, 주민번호, 부서명, 직급명 조회

--오라클 전용 구문
SELECT EMP_NAME 사원명, EMP_NO 주민번호, DEPT_TITLE 부서명, JOB_NAME 직급명
FROM EMPLOYEE E, DEPARTMENT D, JOB J
WHERE E.DEPT_CODE=D.DEPT_ID
AND   E.JOB_CODE=J.JOB_CODE
AND   SUBSTR(EMP_NO,1,2) LIKE '7%'
AND   SUBSTR(EMP_NO,8,1) IN('2','4')
AND   EMP_NAME LIKE '전%';

--ANSI 구문
SELECT EMP_NAME 사원명, EMP_NO 주민번호, DEPT_TITLE 부서명, JOB_NAME 직급명
FROM EMPLOYEE E
LEFT JOIN DEPARTMENT D ON(E.DEPT_CODE=D.DEPT_ID)
LEFT JOIN JOB J ON(E.JOB_CODE=J.JOB_CODE)
WHERE SUBSTR(EMP_NO,1,2) LIKE '7%'
AND   SUBSTR(EMP_NO,8,1) IN('2','4')
AND   EMP_NAME LIKE '전%';

--사번, 사원명, 직급명, 급여등급, 구분 조회
--    이 때, 구분에 해당하는 값은
--    급여등급이 S1, S2 인 경우 '고급'
--    급여등급이 S3, S4 인 경우 '중급'
--    급여등급이 S5, S6 인 경우 '초급' 으로 조회

--오라클 전용 구문
SELECT E.EMP_ID 사번, E.EMP_NAME 사원명, J.JOB_NAME 직급명, SAL_LEVEL 급여등급
        ,CASE WHEN SAL_LEVEL IN ('S1','S2') THEN '고급'
        WHEN SAL_LEVEL IN ('S3','S4') THEN '중급'
        WHEN SAL_LEVEL IN ('S5','S6') THEN '초급'
        END 구분
FROM EMPLOYEE E, JOB J
WHERE E.JOB_CODE=J.JOB_CODE;

반응형

+ Recent posts