SQL JOIN
- Pagina precedente SQL Aliases
- Pagina successiva SQL Inner Join
Il join SQL viene utilizzato per query dati da una o più tabelle in base alla relazione tra le colonne di queste tabelle.
Join e Key
A volte, per ottenere risultati completi, dobbiamo ottenere risultati da due o più tabelle. Dobbiamo eseguire un join.
Le tabelle nel database possono essere collegate tra loro tramite una chiave. La chiave primaria (Primary Key) è una colonna in cui ogni valore della riga è unico. Nella tabella, ogni valore della chiave primaria è unico. Lo scopo di questo è di incrociare i dati tra le tabelle senza ripetere tutti i dati di ciascuna tabella.
Vediamo ora la tabella "Persons":
Id_P | LastName | FirstName | Indirizzo | Città |
---|---|---|---|---|
1 | Adams | John | Via Oxford | Londra |
2 | Bush | George | Via Fifth Avenue | New York |
3 | Carter | Thomas | Via Chang'an | Pechino |
Si prega di notare che la colonna "Id_P" è la chiave primaria della tabella "Persons". Questo significa che non ci sono due righe che possono avere lo stesso Id_P. Anche se i nomi di due persone sono completamente identici, l'Id_P può distinguerli.
Vediamo ora la tabella "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
Si prega di notare che la colonna "Id_O" è la chiave primaria della tabella "Orders", contemporaneamente, la colonna "Id_P" nella tabella "Orders" viene utilizzata per riferirsi alla tabella "Persons" senza utilizzare il nome esatto delle persone.
Attenzione, la colonna "Id_P" mette in relazione le due tabelle superiori.
Citazione di due tabelle
Possiamo ottenere dati da due tabelle citando due tabelle:
Chi ha ordinato il prodotto e cosa ha ordinato?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
Risultato del set:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - Utilizzo di Join
Oltre al metodo sopra descritto, possiamo anche utilizzare la parola chiave JOIN per ottenere dati da due tabelle.
Se vogliamo elencare tutte le ordinazioni delle persone, possiamo utilizzare la seguente espressione SELECT:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
Risultato del set:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Diversi JOIN SQL
Oltre al INNER JOIN (connessione interna) utilizzato negli esempi precedenti, possiamo utilizzare altri tipi di connessioni.
Di seguito è elencato i tipi di JOIN che puoi utilizzare, nonché le differenze tra loro.
- JOIN: Restituisce le righe se c'è almeno una corrispondenza nella tabella
- LEFT JOIN: Restituisce tutte le righe della tabella sinistra anche se non ci sono corrispondenze nella tabella destra
- RIGHT JOIN: Restituisce tutte le righe della tabella destra anche se non ci sono corrispondenze nella tabella sinistra
- FULL JOIN: Restituisce le righe se esiste una corrispondenza in uno dei due tavoli
- Pagina precedente SQL Aliases
- Pagina successiva SQL Inner Join