Parola chiave MySQL INNER JOIN
Parola chiave MySQL INNER JOIN
La INNER JOIN
parola chiave seleziona i record che hanno valori corrispondenti in entrambe le tabelle.
Sintassi INNER JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
Database dimostrativo
In questo tutorial utilizzeremo il noto database di esempio Northwind.
Di seguito una selezione dalla tabella "Ordini":
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10308 | 2 | 7 | 1996-09-18 | 3 |
10309 | 37 | 3 | 1996-09-19 | 1 |
10310 | 77 | 8 | 1996-09-20 | 2 |
E una selezione dalla tabella "Clienti":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
Esempio di MySQL INNER JOIN
La seguente istruzione SQL seleziona tutti gli ordini con le informazioni sui clienti:
Esempio
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN
Customers ON Orders.CustomerID = Customers.CustomerID;
Nota: la INNER JOIN
parola chiave seleziona tutte le righe da entrambe le tabelle purché vi sia una corrispondenza tra le colonne. Se ci sono record nella tabella "Ordini" che non hanno corrispondenze in "Clienti", questi ordini non verranno mostrati!
UNISCITI a tre tavoli
La seguente istruzione SQL seleziona tutti gli ordini con informazioni sul cliente e sul mittente:
Esempio
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM
((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);