Połączenia służą do łączenia ze sobą dwóch powiązanych tabel.
W swoim przykładzie możesz połączyć tabelę Employee i tabelę Department, w następujący sposób:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Spowodowałoby to zestaw rekordów taki jak:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Użyłem INNER JOIN
nad. INNER JOIN
s połączyć dwie tabele tak, aby tylko wyświetlane są rekordy z dopasowaniami w obu tabelach i są one łączone w tym przypadku na numer działu (pole DNO w Employee, DNUMBER w tabeli Department).
LEFT JOIN
pozwalają łączyć dwie tabele, gdy masz rekordy w pierwszej tabeli, ale może nie mają rekordy w drugiej tabeli. Załóżmy na przykład, że chcesz otrzymać listę wszystkich pracowników oraz osób na utrzymaniu:
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
Problem polega na tym, że jeśli pracownik nie mają zależny, wtedy ich rekord w ogóle się nie pojawi -- ponieważ nie ma pasującego rekordu w tabeli DEPENDENT.
Używasz więc lewego join, które zachowuje wszystkie dane po „lewej” (tj. pierwszej tabeli) i pobiera pasujące dane „po prawej” (druga tabela):
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
Teraz otrzymujemy wszystkie ewidencji pracowników. Jeśli nie ma pasujących osób na utrzymaniu dla danego pracownika, dependent_first
i dependent_last
pola będą puste.