Usar combinaciones cruzadas

Actualizado: 14 de abril de 2006

Una combinación cruzada que no tenga una cláusula WHERE genera el producto cartesiano de las tablas involucradas en la combinación. El tamaño del conjunto de resultados de un producto cartesiano es igual al número de filas de la primera tabla multiplicado por el número de filas de la segunda tabla. En el siguiente ejemplo se muestra una combinación cruzada de 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;

El conjunto de resultados contiene 170 filas (SalesPerson tiene 17 filas y SalesTerritory tiene 10; 17 multiplicado por 10 es igual a 170).

Sin embargo, si se agrega una cláusula WHERE, la combinación cruzada se comporta como una combinación interna. Por ejemplo, las siguientes consultas Transact-SQL producen el mismo conjunto de resultados.

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;

Vea también

Conceptos

Usar operadores en expresiones

Otros recursos

WHERE (Transact-SQL)
SELECT (Transact-SQL)
Operadores (Transact-SQL)
Ejemplos de SELECT (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido modificado:
  • Se han cambiado los ejemplos para usar tablas distintas.