JOIN in SQL Server: Tipi con esempi
⚡ Riepilogo intelligente
In SQL Server, le JOIN combinano righe provenienti da due o più tabelle in base a una colonna correlata, utilizzando le JOIN INNER, LEFT OUTER, RIGHT OUTER e FULL OUTER per controllare quali righe corrispondenti e non corrispondenti vengono visualizzate nel risultato.

Che cosa sono le JOIN in SQL Server?
È possibile recuperare i dati da più di una tabella utilizzando l'istruzione JOIN in SQL Server. Un JOIN combina righe di due o più tabelle in base a una colonna correlata tra di esse, il più delle volte una chiave primaria abbinato a un chiave esternaIn SQL Server esistono principalmente quattro tipi di JOIN:
- INNER JOIN / join semplice
- GIUNZIONE ESTERNA SINISTRA / GIUNZIONE SINISTRA
- GIUNZIONE ESTERNA DESTRA / GIUNZIONE DESTRA
- COMPLETO ESTERNO JOIN
La tabella seguente riassume le righe restituite da ciascun tipo di JOIN:
| Tipo di unione | Righe restituite |
| INNER JOIN | Vengono considerate solo le righe in cui la condizione di join corrisponde in entrambe le tabelle. |
| UNIONE ESTERNO SINISTRO | Tutte le righe della tabella di sinistra, più le righe corrispondenti della tabella di destra (NULL dove non vi è corrispondenza). |
| GIUNZIONE ESTERNA DESTRA | Tutte le righe della tabella di destra, più le righe corrispondenti della tabella di sinistra (NULL dove non vi è corrispondenza). |
| COMPLETO ESTERNO JOIN | Tutte le righe di entrambe le tabelle, con valori NULL laddove la condizione non è soddisfatta. |
Gli esempi seguenti utilizzano due con tabelleStudenti e Tasse, uniti in base alla colonna comune di ammissione. Ogni sezione spiega un tipo di JOIN con la sua sintassi, una query di esempio e il risultato.
INNER JOIN
Questo tipo di SQL Server La funzione JOIN restituisce le righe di tutte le tabelle in cui la condizione di join è vera. La sua sintassi è la seguente:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Utilizzeremo le due tabelle seguenti per dimostrarlo. La tabella Studenti qui sotto elenca ogni studente e il relativo numero di matricola:
La tabella delle tariffe riportata di seguito indica l'importo pagato per ciascun numero di ammissione:
Il seguente comando illustra un'operazione INNER JOIN in SQL Server con un esempio:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Il comando restituisce il seguente risultato, mostrando solo i numeri di ammissione presenti in entrambe le tabelle:
Possiamo individuare gli studenti che hanno pagato la retta. Abbiamo utilizzato la colonna con i valori comuni a entrambe le tabelle, ovvero la colonna relativa all'ammissione.
UNIONE ESTERNO SINISTRO
Questo tipo di join restituisce tutte le righe della tabella di sinistra più i record della tabella di destra con valori corrispondenti. Ad esempio:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Il codice restituisce il seguente risultato, keeping ogni studente anche quando non corrisponde alcuna registrazione delle tasse:
I record senza valori corrispondenti vengono sostituiti con NULL nelle rispettive colonne.
GIUNZIONE ESTERNA DESTRA
Questo tipo di join restituisce tutte le righe della tabella di destra e solo quelle con valori corrispondenti nella tabella di sinistra. Per esempio:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
L'istruzione OUTER JOIN in SQL Server restituisce il seguente risultato:
Il motivo dell'output precedente è che tutte le righe nella tabella Tariffe sono disponibili nella tabella Studenti quando corrispondono nella colonna di ammissione.
COMPLETO ESTERNO JOIN
Questo tipo di join restituisce tutte le righe di entrambe le tabelle, con valori NULL laddove la condizione JOIN non è vera. Ad esempio:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Il codice restituisce il seguente risultato per le query FULL OUTER JOIN in SQL, combinando tutte le righe di entrambe le tabelle:






