· Andrea Pollini · basi dati · 2 min read
Quali sono le differenze tra "INNER JOIN" e "OUTER JOIN"
La differenza tra INNER JOIN e OUTER JOIN è uno dei concetti fondamentali della progettazione di database relazionali. In questo articolo, esaminiamo le differenze tra INNER JOIN e OUTER JOIN e quando è opportuno utilizzare ciascuno di essi.
INNER JOIN e OUTER JOIN sono due tipi di join utilizzati in SQL per combinare dati da due o più tabelle. La differenza principale tra di loro sta nel modo in cui gestiscono i dati che non coincidono tra le tabelle.
INNER JOIN:
- Restituisce solo le righe in cui c’è un record corrispondente in entrambe le tabelle.
- Pensa all’intersezione di due insiemi di dati. Mantiene solo i punti dati comuni.
Esempio:
Supponiamo di avere due tabelle: Clienti
e Ordini
. La tabella Clienti
contiene informazioni sui clienti, mentre la tabella Ordini
contiene informazioni sugli ordini effettuati dai clienti.
Questa query restituirà solo le righe della tabella Clienti
per cui esiste un ordine corrispondente nella tabella Ordini
. In altre parole, mostrerà solo i clienti che hanno effettuato almeno un ordine.
OUTER JOIN:
Restituisce tutti i record da una tabella (solitamente la sinistra) e li abbina all’altra tabella.
I dati mancanti nelle righe non abbinate vengono riempiti con valori nulli.
Esistono tre tipi di OUTER JOIN a seconda della tabella di cui si desidera mantenere tutti i record:
- LEFT OUTER JOIN: Mantiene tutti i record dalla tabella di sinistra e li abbina alla tabella di destra.
- RIGHT OUTER JOIN: Mantiene tutti i record dalla tabella di destra e li abbina alla tabella di sinistra.
- FULL OUTER JOIN: Mantiene tutti i record da entrambe le tabelle e li combina in base ai criteri di corrispondenza.
Esempio:
Questa query restituirà tutti i record dalla tabella Clienti
, anche se non hanno un ordine corrispondente nella tabella Ordini
. Le righe senza un ordine corrispondente nella tabella Ordini
avranno valori nulli per le colonne della tabella Ordini
.
Riepilogo:
Funzionalità | INNER JOIN | OUTER JOIN |
---|---|---|
Corrispondenza dati | Entrambe le tabelle | Una tabella (solitamente sinistra) |
Dati non coincidenti | Scartati | Riempiti con valori nulli |
Risultato | Intersezione | Unione (con valori nulli) |
INNER JOIN è utile quando si desiderano solo i dati che coincidono in entrambe le tabelle. OUTER JOIN è utile quando si desiderano tutti i dati da una tabella, anche se non hanno un corrispondenza nell’altra tabella.