Linguaggio SQL e Join tra tabelle: una guida pratica all'uso

Nicola Iantomasi - Oct 16 '23 - - Dev Community

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.

. . . . . .
Terabox Video Player