3つ以上の結合(JOIN)


-- SQL 1992 CODE VERSION

SELECT 테이블명1.컬럼명, 테이블명2.컬럼명, 테이블명3.컬럼명
FROM 테이블명1, 테이블명2, 테이블명3
WHERE 테이블명1.컬럼명1 = 테이블명2.컬럼명1
  AND 테이블명2.컬럼명2 = 테이블명3.컬럼명2;
-- SQL 1999 CODE VERSION
SELECT 테이블명1.컬럼명, 테이블명2.컬럼명, 테이블명3.컬럼명
FROM 테이블명1 JOIN 테이블명2
ON 테이블명1.컬럼명1 = 테이블명2.컬럼명1
               JOIN 테이블명3
               ON 테이블명2.컬럼명2 = 테이블명3.컬럼명2;
実習
--※ HR.JOBS, HR.EMPLOYEES, HR.DEPARTMENTS 테이블을 대상으로 직원들의 데이터를
--  FIRST_NAME, LAST_NAME, JOB_TITLE, DEPARTMENT_NAME 항목으로 조회한다.
/*      |           |           |            |  
     EMPLYEES   EMPLOYEES      JOBS     DEPARTMENTS

*/
SELECT E.FIRST_NAME, E.LAST_NAME, JOB_TITLE, D.DEPARTMENT_NAME
FROM EMPLOYEES E LEFT JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
                      JOIN JOBS J
                        ON E.JOB_ID = J.JOB_ID;
-- EMPLOYEES, DEPARTMENTS, JOBS, LOCATIONS, COUNTRIES, REGIONS 테이블을 대상으로
-- 직원들의 데이터를 다음과 같이 조회할수 있도록 쿼리문을 구성한다.
-- FIRST_NAME, LAST_NAME, JOB_TITLE, DEPARTMENT_NAME, CITY, COUNTRY_NAME, REGION_NAME
/*
    EMPLOYEES  EMPLOYEES    JOBS       DEPARTMENTS  LOCATIONS  COUNTRIES    REGIONS
*/
SELECT E.FIRST_NAME, E.LAST_NAME, J.JOB_TITLE, D.DEPARTMENT_NAME, L.CITY, C.COUNTRY_NAME, R.REGION_NAME
FROM EMPLOYEES E LEFT JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
                 LEFT JOIN LOCATIONS L
                 ON D.LOCATION_ID = L.LOCATION_ID
                 LEFT JOIN JOBS J
                 ON E.JOB_ID = J.JOB_ID
                 LEFT JOIN COUNTRIES C
                 ON L.COUNTRY_ID = C.COUNTRY_ID
                 LEFT JOIN REGIONS R
                 ON C.REGION_ID = R.REGION_ID
ORDER BY 1;