TOP

Złączenia SQL

SQL JOIN

Wyrażenie JOIN służy do łączenia wierszy z dwóch lub większej liczby tabel na podstawie powiązanej kolumny między nimi.


Spójrzmy na przykład z tabeli „Orders” („Zamówienia”):

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082

Następnie spójrz na próbkę z tabeli „Customers” („Klienci”):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico

Należy pamiętać, że kolumna „CustomerID” w tabeli „Orders” odnosi się do „CustomerID” w tabeli „Customers”. Relacją pomiędzy dwiema powyższymi tabelami jest kolumna „CustomerID”.

Możemy wówczas utworzyć następującą instrukcję SQL (zawierającą INNER JOIN), która wybiera rekordy posiadające pasujące wartości w obu tabelach:

Run SQLSELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID

i to wygeneruje coś takiego:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados1996-09-18
10365Antonio Moreno Taquería1996-11-27
10355Around the Horn1996-11-15
10383Around the Horn1996-12-16
10289B's Beverages1996-08-26

Różne typy SQL JOIN

Oto różne typy JOIN w SQL:

  • (INNER) JOIN: Zwraca rekordy, które mają pasujące wartości w obu tabelach
  • LEFT (OUTER) JOIN: Zwraca wszystkie rekordy z lewej tabeli i odpowiadające im rekordy z prawej tabeli
  • RIGHT (OUTER) JOIN: Zwraca wszystkie rekordy z prawej tabeli i pasujące rekordy z lewej tabeli
  • FULL (OUTER) JOIN: Zwraca wszystkie rekordy, jeśli istnieje dopasowanie w lewej lub prawej tabeli


  • SQL INNER JOIN SQL LEFT JOIN SQL RIGHT JOIN SQL FULL OUTER JOIN