Съединенията се използват за комбиниране на две свързани таблици заедно.
Във вашия пример можете да комбинирате таблицата на служителите и таблицата на отдела, както следва:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Това ще доведе до набор от записи като:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Използвах INNER JOIN
по-горе. INNER JOIN
s комбинират две таблици, така че само се показват записи със съвпадения в двете таблици и те са обединени в този случай на номера на отдела (поле DNO в служител, DNUMBER в таблицата на отдел).
LEFT JOIN
s ви позволява да комбинирате две таблици, когато имате записи в първата таблица, но може и да не има записи във втората таблица. Например, да приемем, че искате списък на всички служители, плюс всички зависими:
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Проблемът тук е, че ако един служител не имат зависим, тогава записът им изобщо няма да се покаже -- защото няма съвпадащ запис в таблицата DEPENDENT.
И така, използвате ляво join, който запазва всички данни от "ляво" (т.е. първата таблица) и изтегля всички съвпадащи данни от "дясно" (втората таблица):
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Сега получаваме всички от досиетата на служителите. Ако няма съвпадащи зависими(и) за даден служител, dependent_first
и dependent_last
полетата ще бъдат нулеви.