JOIN SQL spiegati: INNER, LEFT, RIGHT, CROSS (e il Comma Join)
Published: 2026-02-04
I join SQL ti permettono di combinare righe da due tabelle in base a colonne correlate. Questo breve tutorial mostra i quattro tipi di join principali e spiega perché il comma join è lo stesso di un CROSS JOIN.
Dati di esempio
Usiamo due tabelle in tutti gli esempi:
Tabella employees:
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Tabella departments:
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
Prova i join nel browser
Puoi eseguire le query di esempio direttamente nella pagina. Modifica la query e fai clic su Run.
INNER JOIN
Restituisce solo le righe che corrispondono in entrambe le tabelle.
Risultato: Ava/Sales, Ben/Engineering. Cara è esclusa perché non ha un reparto corrispondente, e Support è escluso perché non c’è nessun dipendente nel reparto 30.
LEFT JOIN (LEFT OUTER JOIN)
Restituisce tutte le righe dalla tabella di sinistra, più le righe corrispondenti dalla tabella di destra. Le righe non corrispondenti sul lato destro diventano NULL.
Risultato: Ava/Sales, Ben/Engineering, Cara/NULL. Tutti i dipendenti vengono mantenuti.
RIGHT JOIN (RIGHT OUTER JOIN)
Restituisce tutte le righe dalla tabella di destra, più le righe corrispondenti dalla tabella di sinistra. Le righe non corrispondenti sul lato sinistro diventano NULL.
Risultato: Ava/Sales, Ben/Engineering, NULL/Support. Tutti i reparti vengono mantenuti.
Nota: molti sviluppatori preferiscono riscrivere il
RIGHT JOINcomeLEFT JOINinvertendo l’ordine delle tabelle, per leggibilità e coerenza.
CROSS JOIN
Restituisce il prodotto cartesiano (tutte le combinazioni) delle due tabelle.
Risultato: 3 × 3 = 9 righe (ogni dipendente abbinato a ogni reparto).
Comma Join (Sintassi legacy)
Il comma join è lo stesso di un CROSS JOIN. Elenca le tabelle separate da virgole nella clausola FROM:
Questo produce lo stesso prodotto cartesiano di CROSS JOIN. Se aggiungi un filtro nella clausola WHERE, si comporta come un INNER JOIN:
Pur essendo ancora valida, la sintassi con la virgola è considerata superata perché mescola la logica dei join con i filtri e può essere più difficile da leggere. È preferibile la sintassi esplicita JOIN ... ON.
DbGate: LEFT JOIN automatici quando si espandono le colonne
Nel data browser di DbGate, espandere una colonna chiave esterna genera automaticamente una query con un LEFT JOIN per recuperare i dati correlati senza eliminare righe dalla tabella principale. Questo mantiene intatto il dataset di base rendendo subito disponibili i campi correlati.
Riepilogo
INNER JOINmantiene solo le righe corrispondenti.LEFT JOINmantiene tutte le righe dalla tabella di sinistra.RIGHT JOINmantiene tutte le righe dalla tabella di destra.CROSS JOINrestituisce tutte le combinazioni.- Il comma join è lo stesso di
CROSS JOIN(e con un filtroWHEREdiventa unINNER JOIN).