Essere abili nella manipolazione dei dati con SQL è essenziale per qualsiasi Data Analyst. Uno degli strumenti più rilevanti in questo contesto sono le JOIN, che permettono di collegare i dati di diverse tabelle.
Sintassi delle Join
Per combinare i dati in più tabelle con il linguaggio SQL, dobbiamo scrivere una JOIN all'interno della clausola FROM e il comando ON per specificare la condizione secondo cui le righe devono essere unite. Ad esempio, per fondere le tabelle "post" e "comments" sulla colonna "post_id", si può utilizzare la seguente query:
SELECT Fatture.*, Corrieri.NomeCorriere
FROM Fatture
INNER JOIN Corrieri
ON Fatture.IdCorriere = Corrieri.IdCorriere;
Per ottenere un risultato che abbia senso nell'analisi dei dati, è importante assicurarsi che IdCorriere sia:
- una chiave primaria nella tabella Corrieri
- una chiave esterna nella tabella Fatture.
In caso contrario, si rischia di generare un output con dati duplicati o mancanti.
Scegliere la sintassi con JOIN esplicita
Un aspetto importante che merita ulteriore enfasi è la scelta della sintassi con la JOIN esplicita, piuttosto che utilizzare una virgola nella FROM e aggiungere una condizione nella WHERE, come in questo esempio.
Ci sono diversi motivi per cui questa opzione è preferibile:
SELECT Fatture.*, Corrieri.NomeCorriere
FROM Fatture, Corrieri
WHERE Fatture.IdCorriere = Corrieri.IdCorriere;
Leggibilità: La join separa la parte del codice che gestisce il collegamento tra le tabelle da quella che imposta altri filtri sui dati.
Facilità di modifica: Supponiamo che tu debba trasformare un'INNER JOIN in una LEFT JOIN. Se hai già esplicitato la JOIN, tutto ciò che devi fare è modificare una parola! Al contrario, su molti database, sarebbe necessario riscrivere completamente la query.
Aggiungo ulteriori dettagli su questo paragrafo nel mio blog
Rinominare colonne e tabelle nelle Join
Per garantire la leggibilità delle query SQL, è buona norma usare nomi descrittivi e concisi per colonne e tabelle quando si utilizzano le JOIN. Questo facilita la lettura e permette di intervenire rapidamente se qualcosa nella nostra query non funziona come previsto. Ad esempio, potremmo riscrivere la query precedente in questo modo:
SELECT f.*, c.NomeCorriere
FROM Fatture as f
LEFT JOIN Corrieri as c
ON f.IdCorriere = c.IdCorriere;
Tipologie di join:
Ci sono cinque tipi principali di JOIN, a seconda dell'obiettivo della query.
INNER JOIN: unisce le tabelle utilizzando solo le righe che hanno corrispondenze in entrambe le tabelle.
LEFT JOIN: oltre al risultato dell’INNER JOIN, include anche le righe della tabella di sinistra che non hanno corrispondenze.
RIGHT JOIN: l'opposto del precedente, include al risultato dell’INNER JOIN anche le righe della tabella di destra che non hanno corrispondenze.
FULL JOIN: combina i risultati di LEFT e RIGHT, visualizzando sia le righe della tabella di sinistra che quelle di destra che non hanno corrispondenza.
CROSS JOIN: effettua tutte le combinazioni possibili, senza nessun criterio
In questo video ragioniamo su quale tipologia di Join è meglio usare
Conclusione sull'utilizzo delle Join
In conclusione, le JOIN sono uno strumento cruciale per la gestione dei dati in SQL. Tuttavia, è necessario fare attenzione a scegliere il tipo di Join appropriato in base al contesto e a formulare correttamente la condizione nell'ON.