Linguaggio SQL e Join tra tabelle: una guida pratica all'uso
Published: 2023-10-16 14:47:01

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](https://www.yimp.it/join-tra-tabelle-con-il-linguaggio-sql/#Perch%C3%A9-scegliere-la-sintassi-con-la-JOIN-esplicita)

## 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
{% embed https://www.youtube.com/watch?v=c5xq1zo7tNk&t=6s %}

## 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.