Share via


Utilizzo di cross join

Data aggiornamento: 14 aprile 2006

Un cross join che non include una clausola WHERE consente di ottenere il prodotto cartesiano delle tabelle specificate nel join. Le dimensioni del set di risultati di un prodotto cartesiano corrispondono al numero di righe della prima tabella moltiplicato per il numero di righe della seconda. Nell'esempio seguente viene illustrato un cross join Transact-SQL.

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
CROSS JOIN Sales.SalesTerritory t
ORDER BY p.SalesPersonID;

Il set di risultati include 170 righe, ovvero il prodotto delle 17 righe della tabella SalesPerson moltiplicato per le 10 righe della tabella SalesTerritory.

Se tuttavia si aggiunge una clausola WHERE, il cross join funziona esattamente come un inner join. Le query Transact-SQL seguenti consentono di ottenere lo stesso set di risultati.

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
CROSS JOIN Sales.SalesTerritory t
WHERE p.TerritoryID = t.TerritoryID
ORDER BY p.SalesPersonID;

-- Or

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
INNER JOIN Sales.SalesTerritory t
ON p.TerritoryID = t.TerritoryID
ORDER BY p.SalesPersonID;

Vedere anche

Concetti

Utilizzo di operatori nelle espressioni

Altre risorse

WHERE (Transact-SQL)
SELECT (Transact-SQL)
Operatori (Transact-SQL)
Esempi di istruzioni SELECT (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Contenuto modificato:
  • Modifica degli esempi relativi all'utilizzo di tabelle diverse.