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
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|