Skorzystamy z tabel EMPLOYEES, JOB_HISTORY i DEPARTMENTS z bezpłatnej bazy Oracle HR dostępnej tutaj: http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
Łączenie wielu tabel w SQL prowadzi się używając klauzuli WHERE i operatora AND
Przy łączeniu wielu tabel w zapytaniu należy poprzedzać nazwy kolumn nazwami tabel.
Połączenie trzech baz za pomocą wspólnego klucza DEPARTMENT_ID
SELECT
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
JOB_HISTORY.START_DATE,
JOB_HISTORY.END_DATE,
DEPARTMENTS.DEPARTMENT_NAME
FROM EMPLOYEES, DEPARTMENTS, JOB_HISTORY
WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID AND EMPLOYEES.DEPARTMENT_ID = JOB_HISTORY.DEPARTMENT_ID;
Otrzymujemy tabelę wynikową:
Teraz zrobimy łączenie wielu tabel w SQL za pomocą różnych kluczy.
SELECT
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
JOB_HISTORY.START_DATE,
JOB_HISTORY.END_DATE,
DEPARTMENTS.DEPARTMENT_NAME,
JOBS.JOB_TITLE
FROM EMPLOYEES, DEPARTMENTS, JOB_HISTORY, JOBS
WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID
AND EMPLOYEES.DEPARTMENT_ID = JOB_HISTORY.DEPARTMENT_ID
AND JOBS.JOB_ID = EMPLOYEES.JOB_ID;
Otrzymujemy tabelę wynikową:
Teraz połączymy trzy tabele z warunkiem, że maksymalna pensja będzie większa od 15 000.
SELECT
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
JOB_HISTORY.START_DATE,
JOB_HISTORY.END_DATE,
DEPARTMENTS.DEPARTMENT_NAME,
JOBS.JOB_TITLE,
JOBS.MAX_SALARY
FROM EMPLOYEES, DEPARTMENTS, JOB_HISTORY, JOBS
WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID
AND EMPLOYEES.DEPARTMENT_ID = JOB_HISTORY.DEPARTMENT_ID
AND JOBS.JOB_ID = EMPLOYEES.JOB_ID
AND JOBS.MAX_SALARY > 15000;
Otrzymujemy tabelę wynikową: