MySQL si unisce
Tabelle di unione MySQL
Una JOIN
clausola viene utilizzata per combinare righe di due o più tabelle, in base a una colonna correlata tra di loro.
Diamo un'occhiata a una selezione dalla tabella "Ordini":
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
Quindi, guarda una selezione dalla tabella "Clienti":
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 |
Si noti che la colonna "CustomerID" nella tabella "Ordini" fa riferimento al "CustomerID" nella tabella "Clienti". La relazione tra le due tabelle precedenti è la colonna "CustomerID".
Quindi, possiamo creare la seguente istruzione SQL (che contiene un
INNER JOIN
), che seleziona i record che hanno valori corrispondenti in entrambe le tabelle:
Esempio
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
e produrrà qualcosa del genere:
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 |
Tipi di join supportati in MySQL
INNER JOIN
: restituisce i record che hanno valori corrispondenti in entrambe le tabelleLEFT JOIN
: restituisce tutti i record dalla tabella di sinistra e i record corrispondenti dalla tabella di destraRIGHT JOIN
: restituisce tutti i record dalla tabella di destra e i record corrispondenti dalla tabella di sinistraCROSS JOIN
: restituisce tutti i record da entrambe le tabelle