Udostępnij za pośrednictwem


Łączy używając krzyżowe

łączyć krzyżowego nie zawiera klauzula WHERE daje kartezjańskim tabel biorących udział w sprzężeniu.Rozmiar zestaw wyników kartezjańskim jest liczba wierszy w pierwszej tabela, pomnożonej przez liczbę wierszy w drugiej tabela.W poniższym przykładzie Transact-SQL cross łączyć.

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

Zestaw wyników zawiera wiersze 170 (SalesPerson 17 wiersze i SalesTerritory ma 10; 17 pomnożoną przez 10 równe 170).

Jednakże jeśli WHERE klauzula jest dodawany łączyć krzyżowego zachowuje się jak łączyć wewnętrzne.Na przykład, następujący Transact-SQL kwerend wyprodukowania tego samego zestaw wyników.

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

-- Or

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