Temat: Łączenie tabel w SQL

Połączenia wewnętrzne – INNER JOIN (lub po prostu JOIN)

Złączenie wewnętrzne kojarzy ze sobą rekordy występujące w dwóch lub więcej tabelach i zwraca w wyniku tylko pasujące rekordy. Złączenie wewnętrzne może być zdefiniowane w sposób jasno określony (wyraźny) lub domniemany. Złączenie domniemane jest bardziej intuicyjne i najczęściej spotykane.

Postać połączenia wewnętrznego:

SELECT * FROM tab1, tab2 WHERE tab1.ID=tab2.ID

lub

SELECT * FROM tab1 INNER JOIN tab2 ON tab1.ID=tab2.ID

Przykład (na bazie danych firma):

Aby wyświetlić imię i nazwisko pracownika oraz jego wykształcenie, należy zastosować polecenie:

SELECT IMIE, NAZWISKO, nazwa FROM pracownicy INNER JOIN wyksztalcenie ON pracownicy.KOD_WYKSZTALCENIA=wyksztalcenie.KOD_WYKSZTALCENIA

Połączenia zewnętrzne – OUTER JOIN

Jest rozszerzeniem połączenia INNER JOIN. Pozwala na włączenie do tabeli wynikowej rekordów, które kwalifikują się do tabeli wynikowej na podstawie polecenia INNER JOIN i dodatkowo pozwala włączyć wybrane rekordy niespełniające warunków zapytania. Połączenie zewnętrzne może przybrać następujące postacie:

  • złączenie lewe – LEFT OUTER JOIN – zwracane są wszystkie wiersze występujące w tabeli z lewej strony, a wiersze tabeli z prawej strony, które nie zostały znalezione, są wypełnione wartościami NULL.

SELECT * FROM tab1 LEFT OUTER JOIN tab2 ON tab1.ID=tab2.ID;

  • złączenie prawe – RIGHT OUTER JOIN – zwracane są wszystkie wiersze występujące w tabeli z prawej strony, a wiersze tabeli z lewej strony, które nie zostały znalezione, są wypełnione wartościami NULL.

SELECT * FROM tab1 RIGHT OUTER JOIN tab2 ON tab1.ID=tab2.ID;

  • złączenie pełne – FULL OUTER JOIN – w wyniku zapytania są wiersze złączone wewnętrznie, rozszerzone o rekordy niezwrócone z obydwu tabel, wypełnione NULL.

SELECT * FROM tab1 FULL OUTER JOIN tab2 ON tab1.ID=tab2.ID;