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 JOIN come LEFT JOIN invertendo 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.

  • INNER JOIN mantiene solo le righe corrispondenti.
  • LEFT JOIN mantiene tutte le righe dalla tabella di sinistra.
  • RIGHT JOIN mantiene tutte le righe dalla tabella di destra.
  • CROSS JOIN restituisce tutte le combinazioni.
  • Il comma join è lo stesso di CROSS JOIN (e con un filtro WHERE diventa un INNER JOIN).