Torna all'elenco degli articoli Articoli
Tempo di lettura: 6 minuti

Prontuario di SQL JOIN

Pronti a padroneggiare i JOIN di SQL? Scaricate ora il vostro foglio di riferimento scaricabile! Il vostro scorciatoia per diventare un esperto di JOIN SQL è a un clic di distanza.

Immergetevi nel mondo dei JOIN SQL con il nostro dettagliato Prontuario di SQL JOIN, una risorsa indispensabile per gli appassionati di dati a ogni livello. Che siate principianti o desideriate affinare le vostre abilità, questa guida è progettata per fornirvi il riferimento rapido necessario per utilizzare efficacemente i JOIN SQL.

In questa guida, mostriamo la sintassi di ogni tipo di JOIN, accompagnata da esempi pratici. Dalle basi dell'INNER JOIN alle complessità del FULL OUTER JOIN e del poco utilizzato NATURAL JOIN, abbiamo coperto tutto per voi. Oltre alle operazioni standard di JOIN, discutiamo costruzioni avanzate, come il collegamento della stessa tabella due volte (self-join) e l'uso di condizioni di non uguaglianza (non-equi self join). Inoltre, mostriamo query che coinvolgono più JOIN e più condizioni, permettendovi di affrontare scenari di dati reali con eleganza.

Disponibile sia in formato PDF che PNG per la vostra comodità, questo foglio di riferimento è progettato per essere una risorsa facilmente accessibile, ideale per essere stampata e tenuta a portata di mano per un riferimento rapido.

Opzioni di Download:

  • Scarica PDF A4 - La dimensione standard per la maggior parte delle stampanti, che offre un equilibrio tra spazio e leggibilità.
  • Scarica PDF Mobile - Un PDF adatto ai dispositivi mobili per navigare facilmente sul vostro dispositivo mobile.

Se preferite un approccio più visivo o avete bisogno di una versione digitale adatta a varie applicazioni, offriamo anche il foglio di riferimento come immagine PNG ad alta risoluzione. Per scaricare, cliccate con il tasto destro del mouse (per gli utenti desktop) o tenete premuto a lungo (per gli utenti mobili) sull'immagine.

Prima pagina del Prontuario di SQL JOIN Seconda pagina del Prontuario di SQL JOIN

Unire le tabelle

JOIN combina i dati di due tabelle.

Tabelle unite

JOIN combina tipicamente righe con valori uguali per le colonne specificate. Di solito, una tabella contiene una chiave primaria, ovvero una o più colonne che identificano in modo univoco le righe della tabella (la colonna id_gatto nella tabella gatto). L'altra tabella ha una o più colonne che fanno riferimento alle colonne della chiave primaria della prima tabella (la colonna id_gatto nella tabella giochi). Tali colonne sono chiavi esterne. La condizione di JOIN è l'uguaglianza tra le colonne della chiave primaria di una tabella e quelle che vi fanno riferimento nell'altra tabella.

JOIN

JOIN restituisce tutte le righe che corrispondono alla condizione ON. JOIN è anche chiamato INNER JOIN

SELECT *
FROM giochi
JOIN gatti
  ON giochi.id_gatto = gatti.id_gatto;
INNER JOIN

Esiste anche un'altra sintassi, più vecchia, ma non è raccomandata. È possibile elencare le tabelle da unire nella clausola FROM e inserire le condizioni nella clausola WHERE.

SELECT *
FROM giochi, gatti
WHERE giochi.id_gatto = gatti.id_gatto;

Condizioni di JOIN

La condizione di JOIN non deve essere necessariamente un'uguaglianza, ma può essere qualsiasi condizione. JOIN non interpreta la condizione di JOIN, ma controlla solo se le righe soddisfano la condizione data.

Per fare riferimento a una colonna nella query JOIN, è necessario utilizzare il nome completo della colonna: prima il nome della tabella, poi un punto (.) e il nome della colonna:

  ON gatti.id_gatto = giochi.id_gatto

È possibile omettere il nome della tabella e utilizzare solo il nome della colonna se il nome della colonna è unico per tutte le colonne delle tabelle unite.

NATURAL JOIN

Se le tabelle hanno colonne con lo stesso nome, puoi usare NATURAL JOIN invece di JOIN.

SELECT *
FROM giochi
NATURAL JOIN gatti;
NATURAL JOIN

La colonna comune appare una sola volta nella tabella dei risultati.

Nota: NATURAL JOIN è raramente utilizzato nei problemi concreti.

LEFT JOIN

LEFT JOIN restituisce tutte le righe della tabella di sinistra con le righe corrispondenti della tabella di destra. Le righe senza corrispondenza vengono riempite con valori NULL. LEFT JOIN è chiamato anche LEFT OUTER JOIN.

SELECT *
FROM giochi
LEFT JOIN gatti
  ON giochi.id_gatto = gatti.id_gatto;
LEFT JOIN

RIGHT JOIN

RIGHT JOIN restituisce tutte le righe della tabella di destra con le righe corrispondenti della tabella di sinistra. Le righe senza corrispondenza vengono riempite con valori NULL. RIGHT JOIN è anche chiamato RIGHT OUTER JOIN.

SELECT *
FROM giochi
RIGHT JOIN gatti
  ON giochi.id_gatto = gatti.id_gatto;
RIGHT JOIN

FULL JOIN

FULL JOIN restituisce tutte le righe della tabella di sinistra e tutte le righe della tabella di destra. Riempie le righe non corrispondenti con valori NULL. FULL JOIN è anche chiamato FULL OUTER JOIN.

SELECT *
FROM giochi
FULL JOIN gatti
  ON giochi.id_gatto = gatti.id_gatto;
FULL JOIN

CROSS JOIN

CROSS JOIN restituisce tutte le possibili combinazioni di righe delle tabelle di sinistra e di destra.

SELECT *
FROM giochi
CROSS JOIN gatti;

Altri sintessi:

SELECT *
FROM giochi, gatti;
CROSS JOIN

Alias di colonne e tabelle

Gli alias danno un nome temporaneo a una tabella o a una colonna di una tabella.

Alias di tabelle

Un alias di colonna rinomina una colonna nel risultato. Un alias di tabella rinomina una tabella all'interno della query. Se si definisce un alias di tabella, è necessario utilizzarlo al posto del nome della tabella ovunque nella query. La parola chiave AS è facoltativa nella definizione degli alias.

SELECT
  p.nome AS nome_padrone,
  g.nome_gatto
FROM gatti AS g 
JOIN padroni AS p
  ON g.id_padrone = p.id;
Alias di colonne e tabelle

Self JOIN

È possibile unire una tabella a se stessa, ad esempio per mostrare una relazione genitore-figlio.

SELF JOIN

A ogni occorrenza della tabella deve essere assegnato un alias diverso. Ogni riferimento a una colonna deve essere preceduto da un alias di tabella appropriato.

SELECT
  figli.nome_gatto AS nome_figlio,
  genitori.nome_gatto AS nome_genitore
FROM gatto AS figli
JOIN gatto AS genitori
  ON figli.id_genitore = genitori.id_gatto;
Tabella auto-associata

Non-equi self JOIN

È possibile utilizzare una non-uguaglianza nella condizione ON, ad esempio, per mostrare tutte le diverse coppie di righe.

Non-equi join
SELECT
  a.nome_gioco AS gioco_a,
  b.nome_gioco AS gioco_b
FROM gioco a
JOIN gioco b
  ON a.id_gatto < b.id_gatto;
Tabella auto-associata

Join multipli

È possibile unire più di due tabelle. Prima si uniscono due tabelle, poi si unisce la terza al risultato dell'unione precedente.

Join multipli

JOIN & JOIN

SELECT
  t.nome_gioco,
  g.nome_gatto,
  p.nome AS nome_padrone
FROM giochi t
JOIN gatti g
  ON t.id_gatto = g.id_gatto
JOIN padroni p
  ON g.id_padrone = p.id;
JOIN & JOIN

JOIN & LEFT JOIN

SELECT
  t.nome_gioco,
  g.nome_gatto,
  p.nome AS nome_padrone
FROM giochi t
JOIN gatti g
  ON t.id_gatto = g.id_gatto
LEFT JOIN padroni p
  ON g.id_padrone = p.id;
JOIN & LEFT JOIN

LEFT JOIN & LEFT JOIN

SELECT
  t.nome_gioco,
  g.nome_gatto,
  p.nome AS nome_padrone
FROM giochi t
LEFT JOIN gatti g
  ON t.id_gatto = g.id_gatto
LEFT JOIN padroni p
  ON g.id_padrone = p.id;
LEFT JOIN & LEFT JOIN

JOIN con più condizioni

È possibile utilizzare più condizioni di JOIN utilizzando la parola chiave ON una volta e le parole chiave AND quante volte si vuole.

Join con più condizioni
SELECT
  nome_gatto,
  p.nome AS nome_padrone,
  g.eta AS eta_gatto,
  p.eta AS eta_padrone
FROM gatti g
JOIN padroni p
  ON g.id_padrone = p.id
 AND g.eta < p.eta;
Risultato del join con più condizioni