Usando junções cruzadas

Uma junção cruzada sem uma cláusula WHERE produz o produto cartesiano das tabelas envolvidas na junção. O tamanho do conjunto de resultados do produto cartesiano é o número de linhas na primeira tabela multiplicado pelo número de linhas na segunda tabela. O exemplo a seguir mostra junção cruzada Transact-SQL.

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

O conjunto de resultados contém 170 linhas (SalesPerson tem 17 linhas e SalesTerritory tem 10; 17 multiplicado por 10 é igual a 170).

Porém, se uma cláusula WHERE for adicionada, a junção cruzada se comportará como uma junção interna. Por exemplo, a consulta Transact-SQL a seguir produz o mesmo conjunto de resultados.

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;