Łą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;
Zobacz także