I comandi SQL JOIN: per un’analisi dei dati efficiente

I comandi SQL JOIN sono fondamentali per interrogare e modificare i database relazionali. Consentono di combinare dati provenienti da diverse tabelle in un’unica tabella risultato, facilitando così l’analisi dei dati. Tra i vari tipi di comandi JOIN, ricordiamo INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN, ognuno adatto a un uso specifico.

Cosa sono i comandi SQL JOIN?

SQL è il linguaggio di programmazione standard per lavorare con i database, sia on-premise sia su cloud. Non consente solo di creare database relazionali, ma anche di interrogare dati mediante comandi SQL. La categoria di comandi più importanti e ampiamente utilizzati è SQL JOIN.

Queste espressioni consentono di interrogare, collegare e raggruppare i dati in modo chiaro da varie tabelle. L’unico requisito è la presenza di una connessione logica tra le tabelle, stabilita dalle corrispondenti chiavi primarie ed esterne.

N.B.

Le chiavi primarie e le chiavi esterne sono fondamentali per il corretto funzionamento dei comandi JOIN SQL. Le chiavi primarie identificano le righe in modo univoco e non possono contenere valori nulli, mentre le chiavi esterne stabiliscono collegamenti tra le tabelle. Ad esempio, in una tabella dipendenti, “ID dipendente” funge da chiave primaria, mentre in una tabella automobili, la chiave primaria sarà “ID auto”. Entrambe le tabelle possono collegarsi con “ID auto” come chiave esterna nella tabella dei dipendenti.

Quali tipi di comandi SQL JOIN esistono?

I comandi JOIN sono numerosi e servono a vari scopi. Cominciamo osservando più da vicino alcuni parametri di base:

  • SELECT: specifica le colonne di dati da visualizzare all’interno di un’istruzione SQL JOIN. Con un asterisco (*) consente di selezionare tutto il database.
  • FROM: serve a specificare la tabella o le tabelle da cui i dati devono essere recuperati o uniti con altre tabelle.
  • Comando JOIN: unisce, combina o confronta i dati selezionati da più tabelle secondo una condizione specificata, creando un set di risultati temporaneo.
  • ON: specifica la condizione di JOIN, cioè il criterio secondo il quale le righe delle tabelle coinvolte in JOIN vengono raggruppate.

La sintassi di base contiene gli stessi parametri o altri simili per la maggior parte dei comandi SQL JOIN e si presenta come segue:

SELECT  colonnaA,  colonnaB, …
FROM  tabellaA
Comando JOIN  tabellaB
ON  tabellaA.colonna  =  tabellaB.colonna
sql
Consiglio

Cerchi una soluzione sicura e dalla performance elevata per la gestione dei database? L’hosting server SQL di IONOS ti fornisce la soluzione ideale per server e hosting, soddisfando standard elevati per la protezione dei dati. Tra le opzioni disponibili ricordiamo server cloud, server virtuali (VPS), server dedicati e hosting Linux con MSSQL, MySQL o MariaDB.

Server virtuali (VPS)
Virtualizzazione totale con accesso root completo
  • Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
  • Storage SSD NVMe veloce
  • Plesk Web Host Edition incluso

Nel paragrafo successivo presentiamo i principali comandi SQL JOIN.

SQL INNER JOIN

Questo comando unisce dati di due tabelle diverse in un’unica tabella, se i valori corrispondenti sono presenti in una colonna comune alle due tabelle. INNER JOIN è un comando JOIN usato spesso per impostazione predefinita, qualora non si selezioni un tipo JOIN concreto.

Esempio pratico:

INNER JOIN viene utilizzato nella tabella “ordini” con le colonne “numero dell’ordine”, “ID cliente”, ID prodotto”, “data dell’ordine”, nonché della tabella “clienti” con la colonna “ID cliente”, “cognome” e “indirizzo”. La colonna “ID cliente” funge da chiave primaria per “clienti” e da chiave esterna in “ordini”. In base all’ID cliente, INNER JOIN riunisce tutti gli ordini e dati clienti nella tabella risultato.

Questa la sintassi del comando SQL INNER JOIN:

SELECT  ordini.numero dell’ordine, cliente.cognome, ordini.ID prodotto, ordini.dat dell’ordine
FROM ordini
INNER JOIN  clienti
ON  ordini.ID cliente  =  clienti.ID cliente
sql

OUTER JOIN

OUTER JOIN è un termine generico che fa riferimento a un tipo di JOIN in SQL, ad esempio i comandi LEFT JOIN, RIGHT JOIN e FULL JOIN. Diversamente da INNER JOIN, SQL OUTER JOIN non raggruppa solo righe corrispondenti in diverse tabelle, ma anche righe identiche con il valore NULL. Per una spiegazione più dettagliata rimandiamo ai comandi LEFT JOIN, RIGHT JOIN e FULL JOIN.

SQL LEFT JOIN

Il comando LEFT JOIN raggruppa tutti i valori di una tabella a sinistra con i valori corrispondenti di una tabella a destra. Qualora non esistano valori corrispondenti, il comando restituisce il valore NULL.

Esempio pratico:

SQL LEFT JOIN unisce sia record di dati corrispondenti che non corrispondenti di una tabella di sinistra “clienti” con una tabella di destra “veicoli” utilizzando la colonna comune “ID veicolo”. A differenza di INNER JOIN, il comando restituisce valori non corrispondenti con NULL.

Questa la sintassi del comando SQL LEFT JOIN:

SELECT  *
FROM  clienti
INNER JOIN  veicoli
ON  clienti.ID veicolo  =  veicoli.ID veicolo
sql

SQL RIGHT JOIN

Il comando RIGHT JOIN raggruppa i valori di una tabella di destra con i valori corrispondenti di una tabella di sinistra. Qualora i valori non corrispondano, il comando restituisce un valore NULL nelle colonne della tabella di sinistra.

Esempio pratico:

In base all’ID cliente, SQL RIGHT JOIN inserisce i valori da una tabella di destra “clienti”, tutti i valori selezionati da una tabella di sinistra “ordini”. Qualora i valori non corrispondano, il comando restituisce il valore NULL, ad esempio se per un ID cliente non esistono né ordini, né il cognome.

Questa la sintassi del comando SQL RIGHT JOIN:

SELECT  ordini.numero dell’ordine, cliente.cognome, ordini.ID prodotto, ordini.data dell’ordine
FROM  clienti
RIGHT JOIN  ordini
ON  ordini.ID_cliente  =  clienti.ID cliente
sql

SQL FULL JOIN

Il comando FULL JOIN è una combinazione di LEFT JOIN e RIGHT JOIN ed è anche conosciuto come FULL OUTER JOIN. Tale comando unisce tutti i record di dati e le colonne di entrambe le tabelle. Se tali valori non corrispondono, vengono restituiti valori NULL.

Esempio pratico:

in base all’ID cliente, il comando FULL JOIN raggruppa tutti i dati corrispondenti e non corrispondenti della tabella di destra “collaboratori” con la tabella di sinistra “reparto”. Qualora non sia possibile assegnare un reparto specifico, questo presenta un valore NULL.

Di seguito la sintassi del comando SQL FULL JOIN:

SELECT  *
FROM  collaboratori
FULL JOIN  clienti
ON  collaboratori.ID reparto  =  reparto.ID reparto
sql

CROSS JOIN

CROSS JOIN è noto anche come JOIN cartesiano. Combina ciascuna riga della tabella di sinistra con ciascuna riga della tabella di destra, indipendentemente dalla presenza o meno di sovrapposizioni. Poiché restituisce tutte le combinazioni possibili tra i dati delle due tabelle, non ha bisogno della clausola ON per la condizione JOIN.

Esempio pratico:

CROSS JOIN unisce tutti i dati della tabella “prodotti” a destra con la tabella “ordini” a sinistra.

Questa la sintassi del comando SQL CROSS JOIN:

SELECT  *
FROM  prodotti
CROSS JOIN  ordini
sql

NATURAL JOIN

Il comando NATURAL JOIN unisce tutti i record di dati di due tabelle in base alle colonne comuni. Il parametro ON viene omesso perché non è richiesta l’esistenza di una colonna comune. Poiché il comando unisce automaticamente colonne comuni della tabella, la clausola ON non è necessaria.

Esempio pratico:

Il comando NATURAL JOIN unisce le tabelle “team” e “reparto” in base alle colonne comuni fra le due tabelle. Il comando restituisce risultati solo se esiste almeno una colonna comune.

SQL NATURAL JOIN si scrive in questo modo:

SELECT  *
FROM ordini
NATURAL JOIN  clienti
sql

SQL SELF JOIN

Il comando SQL SELF JOIN si usa per unire una tabella a sé stessa, trattandola sia come tabella di sinistra che di destra. Per un’operazione SELF JOIN puoi quindi utilizzare qualsiasi altro comando. Nella sintassi, t1 e t2 fungono da alias per la tabella di destra e di sinistra, in quanto sono la stessa tabella.

Questa la sintassi di base riprendendo l’esempio LEFT JOIN:

SELECT  *
FROM  tabellaA AS t1
LEFT JOIN  tabellaA AS t2
ON  t1.nome colonna  =  t2.nome colonna
sql
Consiglio

Per una rapida panoramica sulle possibili applicazioni del linguaggio SQL, consulta anche la nostra introduzione a SQL con esempi.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top