Partager via


Utilisation de jointures croisées

Une jointure croisée qui ne possède pas de clause WHERE permet d'obtenir le produit cartésien des tables impliquées dans la jointure. La taille de l'ensemble de résultats d'un produit cartésien correspond au nombre de lignes de la première table, multiplié par le nombre de lignes de la seconde table. L'exemple suivant présente une jointure croisée 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;

L'ensemble de résultats comprend 170 lignes (17 dans SalesPerson et 10 dans SalesTerritory ; 17 x 10 = 170).

Cependant, si vous ajoutez une clause WHERE, la jointure croisée se comporte comme une jointure interne. Par exemple, les requêtes Transact-SQL suivantes produisent le même ensemble de résultats.

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;