I comandi SQL JOIN sono fon­da­men­ta­li per in­ter­ro­ga­re e mo­di­fi­ca­re i database re­la­zio­na­li. Con­sen­to­no di combinare dati pro­ve­nien­ti da diverse tabelle in un’unica tabella risultato, fa­ci­li­tan­do così l’analisi dei dati. Tra i vari tipi di comandi JOIN, ri­cor­dia­mo 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 lin­guag­gio di pro­gram­ma­zio­ne standard per lavorare con i database, sia on-premise sia su cloud. Non consente solo di creare database re­la­zio­na­li, ma anche di in­ter­ro­ga­re dati mediante comandi SQL. La categoria di comandi più im­por­tan­ti e am­pia­men­te uti­liz­za­ti è SQL JOIN.

Queste espres­sio­ni con­sen­to­no di in­ter­ro­ga­re, collegare e rag­grup­pa­re i dati in modo chiaro da varie tabelle. L’unico requisito è la presenza di una con­nes­sio­ne logica tra le tabelle, stabilita dalle cor­ri­spon­den­ti chiavi primarie ed esterne.

N.B.

Le chiavi primarie e le chiavi esterne sono fon­da­men­ta­li per il corretto fun­zio­na­men­to dei comandi JOIN SQL. Le chiavi primarie iden­ti­fi­ca­no le righe in modo univoco e non possono contenere valori nulli, mentre le chiavi esterne sta­bi­li­sco­no col­le­ga­men­ti tra le tabelle. Ad esempio, in una tabella di­pen­den­ti, “ID di­pen­den­te” funge da chiave primaria, mentre in una tabella au­to­mo­bi­li, la chiave primaria sarà “ID auto”. Entrambe le tabelle possono col­le­gar­si con “ID auto” come chiave esterna nella tabella dei di­pen­den­ti.

Quali tipi di comandi SQL JOIN esistono?

I comandi JOIN sono numerosi e servono a vari scopi. Co­min­cia­mo os­ser­van­do più da vicino alcuni parametri di base:

  • SELECT: specifica le colonne di dati da vi­sua­liz­za­re all’interno di un’istru­zio­ne SQL JOIN. Con un asterisco (*) consente di se­le­zio­na­re tutto il database.
  • FROM: serve a spe­ci­fi­ca­re la tabella o le tabelle da cui i dati devono essere re­cu­pe­ra­ti o uniti con altre tabelle.
  • Comando JOIN: unisce, combina o confronta i dati se­le­zio­na­ti da più tabelle secondo una con­di­zio­ne spe­ci­fi­ca­ta, creando un set di risultati tem­po­ra­neo.
  • ON: specifica la con­di­zio­ne di JOIN, cioè il criterio secondo il quale le righe delle tabelle coinvolte in JOIN vengono rag­grup­pa­te.

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 per­for­man­ce elevata per la gestione dei database? L’hosting server SQL di IONOS ti fornisce la soluzione ideale per server e hosting, sod­di­sfan­do standard elevati per la pro­te­zio­ne dei dati. Tra le opzioni di­spo­ni­bi­li ri­cor­dia­mo server cloud, server virtuali (VPS), server dedicati e hosting Linux con MSSQL, MySQL o MariaDB.

Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Nel paragrafo suc­ces­si­vo pre­sen­tia­mo i prin­ci­pa­li comandi SQL JOIN.

SQL INNER JOIN

Questo comando unisce dati di due tabelle diverse in un’unica tabella, se i valori cor­ri­spon­den­ti sono presenti in una colonna comune alle due tabelle. INNER JOIN è un comando JOIN usato spesso per im­po­sta­zio­ne pre­de­fi­ni­ta, qualora non si selezioni un tipo JOIN concreto.

Esempio pratico:

INNER JOIN viene uti­liz­za­to 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 ri­fe­ri­men­to a un tipo di JOIN in SQL, ad esempio i comandi LEFT JOIN, RIGHT JOIN e FULL JOIN. Di­ver­sa­men­te da INNER JOIN, SQL OUTER JOIN non raggruppa solo righe cor­ri­spon­den­ti in diverse tabelle, ma anche righe identiche con il valore NULL. Per una spie­ga­zio­ne più det­ta­glia­ta ri­man­dia­mo 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 cor­ri­spon­den­ti di una tabella a destra. Qualora non esistano valori cor­ri­spon­den­ti, il comando re­sti­tui­sce il valore NULL.

Esempio pratico:

SQL LEFT JOIN unisce sia record di dati cor­ri­spon­den­ti che non cor­ri­spon­den­ti di una tabella di sinistra “clienti” con una tabella di destra “veicoli” uti­liz­zan­do la colonna comune “ID veicolo”. A dif­fe­ren­za di INNER JOIN, il comando re­sti­tui­sce valori non cor­ri­spon­den­ti 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 cor­ri­spon­den­ti di una tabella di sinistra. Qualora i valori non cor­ri­spon­da­no, il comando re­sti­tui­sce 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 se­le­zio­na­ti da una tabella di sinistra “ordini”. Qualora i valori non cor­ri­spon­da­no, il comando re­sti­tui­sce 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 com­bi­na­zio­ne di LEFT JOIN e RIGHT JOIN ed è anche co­no­sciu­to come FULL OUTER JOIN. Tale comando unisce tutti i record di dati e le colonne di entrambe le tabelle. Se tali valori non cor­ri­spon­do­no, vengono re­sti­tui­ti valori NULL.

Esempio pratico:

in base all’ID cliente, il comando FULL JOIN raggruppa tutti i dati cor­ri­spon­den­ti e non cor­ri­spon­den­ti della tabella di destra “col­la­bo­ra­to­ri” 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 car­te­sia­no. Combina ciascuna riga della tabella di sinistra con ciascuna riga della tabella di destra, in­di­pen­den­te­men­te dalla presenza o meno di so­vrap­po­si­zio­ni. Poiché re­sti­tui­sce tutte le com­bi­na­zio­ni possibili tra i dati delle due tabelle, non ha bisogno della clausola ON per la con­di­zio­ne 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 au­to­ma­ti­ca­men­te colonne comuni della tabella, la clausola ON non è ne­ces­sa­ria.

Esempio pratico:

Il comando NATURAL JOIN unisce le tabelle “team” e “reparto” in base alle colonne comuni fra le due tabelle. Il comando re­sti­tui­sce 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, trat­tan­do­la sia come tabella di sinistra che di destra. Per un’ope­ra­zio­ne SELF JOIN puoi quindi uti­liz­za­re 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 ri­pren­den­do 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 pa­no­ra­mi­ca sulle possibili ap­pli­ca­zio­ni del lin­guag­gio SQL, consulta anche la nostra in­tro­du­zio­ne a SQL con esempi.

Vai al menu prin­ci­pa­le