Tutorial su Mysql->Operatore JOIN
Operatore JOIN
L'operatore JOIN viene utilizzato per evitare loop annidati per
recuperare i dati.
Vediamo un esempio di codice PHP
Nel precedente esempio sono stati utilizzati degli alias:
il loro uso è importante, in quanto permettono di distinguere
i campi in caso di ambiguità
(nomi di campi uguali su tabelle diverse),
e migliorano la leggibilità del codice.
Se potete, evitate di scrivere la query in questo modo
Si noti che i nomi dei campi cognome e id_provincia poiché appartengono solo alla tabella rubrica,
sono distinguibili dal gestore di database, ma sono meno leggibili dall'utente.
Tipi diversi di JOIN
In SQL esistono tre principali tipi di operatore JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN
Vediamo alcuni esempi per capire le differenze. Prendiamo in esame le seguenti tabelle
Tabella impiegati
| id | | nome | | id_reparto | | | 1 | | Andrea | | 3 | | | 2 | | Filippo | | 2 | | | 3 | | Mauro | | NULL | | | 4 | | Piero | | 2 | | | 5 | | Paolo | | 1 | | | 6 | | Roberto | | 2 | |
Tabella reparti
| id | | nome | | | 1 | | Amministrazione | | | 2 | | Magazzino | | | 3 | | Ufficio Acquisti | | | 4 | | Produzione | |
INNER JOIN
| La query restituisce le righe delle tabelle solo dove c'è un legame tra r.id e i.id_reparto |
|
|
| Impiegato | | Reparto | | | Paolo | | Amministrazione | | | Filippo | | Magazzino | | | Piero | | Magazzino | | | Roberto | | Magazzino | | | Andrea | | Ufficio Acquisti | |
LEFT JOIN
| La query restituisce tutte le righe della tabella impiegato,
il campo Reparto assume il valore r.nome solo dove c'è un legame tra r.id e i.id_reparto,
altrimenti assume NULL. |
|
|
| Impiegato | | Reparto | | | Andrea | | Ufficio Acquisti | | | Filippo | | Magazzino | | | Mauro | | NULL | | | Piero | | Magazzino | | | Paolo | | Amministrazione | | | Roberto | | Magazzino | |
RIGHT JOIN
| La query restituisce tutte le righe della tabella reparto,
il campo Impiegato assume il valore i.nome solo dove c'è un legame tra r.id e i.id_reparto,
altrimenti assume NULL. |
|
|
| Impiegato | | Reparto | | | Paolo | | Amministrazione | | | Filippo | | Magazzino | | | Piero | | Magazzino | | | Roberto | | Magazzino | | | Andrea | | Ufficio Acquisti | | | NULL | | Produzione | |
Riepilogo