Połączenia MySQL
Tabele łączenia MySQL
Klauzula JOIN
służy do łączenia wierszy z co najmniej dwóch tabel na podstawie powiązanej między nimi kolumny.
Spójrzmy na wybór z tabeli „Zamówienia”:
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
Następnie spójrz na wybór z tabeli „Klienci”:
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
Zwróć uwagę, że kolumna „CustomerID” w tabeli „Orders” odnosi się do „CustomerID” w tabeli „Customers”. Relacja między dwiema powyższymi tabelami to kolumna „CustomerID”.
Następnie możemy utworzyć następującą instrukcję SQL (zawierającą
INNER JOIN
), która wybiera rekordy, które mają pasujące wartości w obu tabelach:
Przykład
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
i wyprodukuje coś takiego:
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 9/18/1996 |
10365 | Antonio Moreno Taquería | 11/27/1996 |
10383 | Around the Horn | 12/16/1996 |
10355 | Around the Horn | 11/15/1996 |
10278 | Berglunds snabbköp | 8/12/1996 |
Obsługiwane typy złączeń w MySQL
INNER JOIN
: Zwraca rekordy, które mają pasujące wartości w obu tabelachLEFT JOIN
: Zwraca wszystkie rekordy z lewej tabeli i dopasowane rekordy z prawej tabeliRIGHT JOIN
: Zwraca wszystkie rekordy z prawej tabeli i dopasowane rekordy z lewej tabeliCROSS JOIN
: Zwraca wszystkie rekordy z obu tabel