Nella guida a SQL abbiamo visto come creare unioni tra due tabelle utilizzando INNER JOIN. In questo articolo vedremo come fare la stessa cosa gestendo non più due, ma tre tabelle.
In realtà si tratta di un operazione molto semplice che non differisce da una comune JOIN su 2 tabelle. Facciamo subito un esempio pratico: pensiamo ad un ipotetico database acquisti di una semplice applicazione di e-commerce composto da tre tabelle così strutturate:
utenti (utilizzata per la gestione degli utenti registrati)
- ute_id
- ute_nome
- ute_cognome
- prod_id
- prod_nome
- prod_descrizione
- prod_prezzo
- acq_id
- acq_ute_id
- acq_prod_id
- acq_data
SELECT
utenti.ute_nome, utenti.ute_cognome,
prodotti.prod_nome, prodotti.prod_descrizione, prodotti.prod_prezzo,
acquisti.acq_data
FROM utenti
INNER JOIN acquisti
ON utenti.ute_id = acquisti.acq_ute_id
INNER JOIN prodotti
ON prodotti.prod_id = acquisti.acq_prod_id
WHERE utenti.ute_id = 1;
Come avrete notato la comune clausula FROM (che individua la prima tabella) è seguita da due INNER JOIN (che individuano rispettivamente la seconda e la terza tabella) accompagnate dall’istruzione di collegamento ON che serve "da ponte" al fine di creare un collegamento razionale tra le diverse tabelle.
Per concludere non mi resta che ricordarvi che, ovviamente, è possibile utilizzare la tecnica vista sopra anche per query più complesse che coinvolgano 4, 5 o più tabelle… in realtà vi consiglio di non esagerare nella costruzioni di simili query che, seppur teoricamente fattibili, risultano spesso difficimente gestibili nella pratica applicativa.