Utilizzo dei join

È possibile specificare le condizioni di join sia nelle clausole FROM sia nelle clausole WHERE. È tuttavia consigliabile utilizzare la clausola FROM. Le condizioni di ricerca possono essere incluse inoltre nelle clausole WHERE e HAVING per filtrare ulteriormente le righe selezionate in base alle condizioni di join.

I join sono suddivisi nelle categorie seguenti:

  • Inner join, ovvero la tipica operazione di join in cui vengono utilizzati operatori di confronto, ad esempio = o <>. Questa categoria di join include equijoin e natural join.
    Gli inner join utilizzano un operatore di confronto che abbina le righe di due tabelle in base ai valori delle colonne disponibili in entrambe le tabelle. È possibile, ad esempio, recuperare tutte le righe che includono lo stesso numero di identificazione dello studente in entrambe le tabelle students e courses.
  • Outer join. Gli outer join possono essere di tipo left, right e full outer join.
    Nella clausola FROM gli outer join vengono specificati insieme a uno dei gruppi di parole chiave seguenti:
    • LEFT JOIN o LEFT OUTER JOIN
      Il set di risultati di un left outer join include tutte le righe della tabella di sinistra specificata nella clausola LEFT OUTER, non solo le righe in cui esiste una corrispondenza tra le colonne unite in join. Se a una riga della tabella di sinistra non corrisponde alcuna riga nella tabella di destra, la riga associata nel set di risultati include un valore Null per tutte le colonne dell'elenco di selezione provenienti dalla tabella di destra.
    • RIGHT JOIN o RIGHT OUTER JOIN
      Un right outer join è l'opposto di un left outer join, ovvero restituisce tutte le righe della tabella di destra. Per la tabella di sinistra viene restituito un valore Null ogni volta che a una riga della tabella di destra non corrisponde alcuna riga della tabella di sinistra.
    • FULL JOIN o FULL OUTER JOIN
      Un full outer join restituisce tutte le righe delle tabelle di destra e di sinistra. Se a una riga di una tabella non corrisponde alcuna riga dell'altra tabella, le colonne dell'elenco di selezione che provengono dalla tabella priva di corrispondenze includono un valore Null. Se invece viene rilevata una corrispondenza tra le due tabelle, l'intera riga del set di risultati include i valori delle tabelle di base.
  • Cross join
    I cross join restituiscono tutte le righe della tabella a sinistra. Ogni riga della tabella a sinistra viene combinata con tutte le righe della tabella a destra. I cross join sono detti anche prodotti cartesiani.

Nell'esempio seguente viene illustrato un inner join utilizzato per recuperare tutti i dipendenti che sono anche venditori:

USE AdventureWorks;
GO
SELECT e.EmployeeID
FROM HumanResources.Employee AS e
    INNER JOIN Sales.SalesPerson AS s
    ON e.EmployeeID = s.SalesPersonID

Le tabelle o viste nella clausola FROM possono essere specificate in qualsiasi ordine con un inner join o un full outer join. Tuttavia, l'ordine delle tabelle o delle viste specificato quando si utilizza un outer join sinistro o destro è importante. Per ulteriori informazioni sull'ordine delle tabelle con left o right outer join, vedere Utilizzo di outer join.

Per ulteriori informazioni su come utilizzare i diversi tipi di join, vedere gli argomenti seguenti:

Vedere anche

Concetti

Nozioni fondamentali sui join
Valori Null e join
Utilizzo di operatori nelle espressioni

Altre risorse

Operatori (Transact-SQL)
CAST e CONVERT (Transact-SQL)
SELECT (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005