🧚 Ascolta! Beekeeper Studio è una GUI per database veloce, moderna e open source Scarica
19 maggio 2025 Di Matthew Rathbone

Unire le tabelle è uno dei concetti più importanti in SQL Server: ti permette di combinare dati da più tabelle per creare report e analisi significativi. Che tu stia costruendo report complessi o facendo analisi dei dati, capire come funzionano le join è essenziale per qualsiasi sviluppatore SQL.

In questa guida completa vedremo ogni tipo di join in SQL Server con esempi pratici, spiegazioni chiare e scenari reali.

🔖 Riferimento rapido: Ti serve una consultazione veloce? Dai un'occhiata al nostro SQL JOIN Cheat Sheet con tutti i tipi di JOIN, diagrammi visivi ed esempi di codice in un unico posto.

Capire le join in SQL Server

Le join in SQL Server sono operazioni che combinano le righe di due o più tabelle in base a una colonna correlata tra loro. I tipi di join più comuni sono:

  • INNER JOIN: restituisce solo i record corrispondenti in entrambe le tabelle
  • LEFT JOIN: restituisce tutti i record della tabella di sinistra, più i record corrispondenti della tabella di destra
  • RIGHT JOIN: restituisce tutti i record della tabella di destra, più i record corrispondenti della tabella di sinistra
  • FULL OUTER JOIN: restituisce tutti i record quando c'è una corrispondenza in una delle due tabelle

Preparare i dati di esempio

Per i nostri esempi useremo due semplici tabelle che rappresentano uno scenario aziendale comune:

Tabella Orders:

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    Product NVARCHAR(50),
    OrderDate DATE
);

INSERT INTO Orders VALUES 
(1, 1, 'Laptop', '2024-01-15'),
(2, 2, 'Mouse', '2024-01-16'),
(3, 3, 'Keyboard', '2024-01-17');
OrderID CustomerID Product OrderDate
1 1 Laptop 2024-01-15
2 2 Mouse 2024-01-16
3 3 Tastiera 2024-01-17

Tabella Customers:

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name NVARCHAR(50),
    City NVARCHAR(50)
);

INSERT INTO Customers VALUES 
(1, 'John Doe', 'New York'),
(2, 'Jane Smith', 'Los Angeles'),
(4, 'Alex Johnson', 'Chicago');
CustomerID Name City
1 John Doe New York
2 Jane Smith Los Angeles
4 Alex Johnson Chicago

INNER JOIN

Una INNER JOIN restituisce solo le righe che hanno un valore corrispondente in entrambe le tabelle. È il tipo di join più usato ed è perfetta quando vuoi vedere solo i record presenti in entrambe le tabelle.

Quando usare INNER JOIN

  • Quando ti servono dati presenti in entrambe le tabelle
  • Per report che mostrano relazioni complete
  • Quando vuoi escludere i record incompleti

Esempio di query SQL

SELECT 
    o.OrderID,
    c.Name,
    c.City,
    o.Product,
    o.OrderDate
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;

Risultato

OrderID Name City Product OrderDate
1 John Doe New York Laptop 2024-01-15
2 Jane Smith Los Angeles Mouse 2024-01-16

Punti chiave:

  • Vengono restituite solo 2 righe (OrderID 3 è escluso perché CustomerID 3 non esiste nella tabella Customers)
  • Nel risultato compaiono solo i clienti che hanno effettuato ordini
  • La condizione di join (o.CustomerID = c.CustomerID) determina quali righe corrispondono

LEFT JOIN

Una LEFT JOIN (chiamata anche LEFT OUTER JOIN) restituisce tutte le righe della tabella di sinistra, più le eventuali righe corrispondenti della tabella di destra. Quando non c'è corrispondenza, le colonne della tabella di destra mostrano valori NULL.

Quando usare LEFT JOIN

  • Quando ti servono tutti i record della tabella principale (tabella di sinistra)
  • Per report che evidenziano lacune nei dati o relazioni mancanti
  • Quando vuoi trovare i record senza corrispondenza

Esempio di query SQL

SELECT 
    o.OrderID,
    c.Name,
    c.City,
    o.Product,
    o.OrderDate
FROM Orders o
LEFT JOIN Customers c ON o.CustomerID = c.CustomerID;

Risultato

OrderID Name City Product OrderDate
1 John Doe New York Laptop 2024-01-15
2 Jane Smith Los Angeles Mouse 2024-01-16
3 NULL NULL Tastiera 2024-01-17

Punti chiave:

  • Tutti e 3 gli ordini compaiono nel risultato (vengono mantenuti tutti i dati della tabella di sinistra)
  • OrderID 3 mostra NULL per le informazioni sul cliente perché CustomerID 3 non esiste nella tabella Customers
  • Utile per individuare ordini senza dati cliente validi

RIGHT JOIN

Una RIGHT JOIN (chiamata anche RIGHT OUTER JOIN) restituisce tutte le righe della tabella di destra, più le eventuali righe corrispondenti della tabella di sinistra. Quando non c'è corrispondenza, le colonne della tabella di sinistra mostrano valori NULL.

Quando usare RIGHT JOIN

  • Quando ti servono tutti i record della tabella di destra
  • Meno comune della LEFT JOIN (di solito puoi riscriverla come LEFT JOIN)
  • Utile quando i dati “principali” sono nella seconda tabella

Esempio di query SQL

SELECT 
    o.OrderID,
    c.Name,
    c.City,
    o.Product,
    o.OrderDate
FROM Orders o
RIGHT JOIN Customers c ON o.CustomerID = c.CustomerID;

Risultato

OrderID Name City Product OrderDate
1 John Doe New York Laptop 2024-01-15
2 Jane Smith Los Angeles Mouse 2024-01-16
NULL Alex Johnson Chicago NULL NULL

Punti chiave:

  • Tutti e 3 i clienti compaiono nel risultato (vengono mantenuti tutti i dati della tabella di destra)
  • Alex Johnson mostra NULL per le informazioni sull'ordine perché non ha effettuato alcun ordine
  • Utile per individuare i clienti che non hanno fatto acquisti

FULL OUTER JOIN

Una FULL OUTER JOIN (o semplicemente FULL JOIN) restituisce tutte le righe quando c'è una corrispondenza in una delle due tabelle. Combina i risultati di LEFT e RIGHT JOIN, mostrando valori NULL dove non c'è corrispondenza da una delle due parti.

Quando usare FULL OUTER JOIN

  • Quando ti servono tutti i record di entrambe le tabelle
  • Per un'analisi completa dei dati
  • Quando vuoi individuare tutte le relazioni e le lacune tra le tabelle

Esempio di query SQL

SELECT 
    o.OrderID,
    c.Name,
    c.City,
    o.Product,
    o.OrderDate
FROM Orders o
FULL OUTER JOIN Customers c ON o.CustomerID = c.CustomerID;

Risultato

OrderID Name City Product OrderDate
1 John Doe New York Laptop 2024-01-15
2 Jane Smith Los Angeles Mouse 2024-01-16
3 NULL NULL Tastiera 2024-01-17
NULL Alex Johnson Chicago NULL NULL

Punti chiave:

  • Nel risultato compaiono tutte e 4 le righe possibili
  • Mostra sia gli ordini orfani (OrderID 3) sia i clienti senza ordini (Alex Johnson)
  • Combina la visione completa di LEFT e RIGHT JOIN
  • Il quadro più completo della relazione tra le tabelle

Punti chiave

Capire le join in SQL Server è essenziale per interrogare i database in modo efficace. Ecco un riepilogo rapido:

Tipo di join Restituisce Caso d'uso
INNER JOIN Solo i record corrispondenti La più comune; quando ti servono relazioni complete
LEFT JOIN Tutta la sinistra + corrispondenze a destra Quando la tabella di sinistra è principale; trovare dati mancanti a destra
RIGHT JOIN Tutta la destra + corrispondenze a sinistra Meno comune; quando la tabella di destra è principale
FULL OUTER JOIN Tutti i record di entrambe Analisi completa; trovare tutte le relazioni e le lacune

Best practice

  1. Usa gli alias di tabella (o per Orders, c per Customers) per rendere le query più pulite
  2. Inizia con INNER JOIN se hai dubbi, poi adatta in base alle esigenze
  3. Usa LEFT JOIN più spesso di RIGHT JOIN per una migliore leggibilità
  4. Specifica sempre la condizione di join con la clausola ON
  5. Considera le prestazioni: le join su colonne indicizzate sono più veloci

Consigli per fare pratica

Per padroneggiare le join in SQL Server:

  1. Inizia con piccoli dataset come gli esempi qui sopra
  2. Disegna diagrammi di Venn per visualizzare cosa restituisce ogni join
  3. Sperimenta con strutture di tabelle e relazioni diverse
  4. Usa SQL Server Management Studio o Beekeeper Studio per esercitarti
  5. Testa i casi limite come valori NULL e relazioni mancanti

Ricorda: le join sono fondamentali nei database relazionali. Una volta padroneggiate, potrai scrivere query potenti che estraggono informazioni preziose dai tuoi dati.

Beekeeper Studio è una GUI per database gratuita & open source

Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.

La versione Linux di Beekeeper è completa al 100%, senza tagli e senza compromessi sulle funzionalità.

Cosa dicono gli utenti di Beekeeper Studio

★★★★★
"Beekeeper Studio ha sostituito completamente il mio vecchio workflow SQL. È veloce, intuitivo e rende di nuovo piacevole lavorare con i database."
— Alex K., Database Developer
★★★★★
"Ho provato molte GUI per database, ma Beekeeper trova l'equilibrio perfetto tra funzionalità e semplicità. Funziona e basta."
— Sarah M., Full Stack Engineer

Pronto a migliorare il tuo workflow SQL?

download Scarica gratis