クロス結合の使用

更新 : 2006 年 4 月 14 日

WHERE 句がないクロス結合では、結合に含まれるテーブルのデカルト積が生成されます。デカルト積結果セットのサイズは、最初のテーブルの行数に 2 番目のテーブルの行数を掛けた値になります。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;

この結果セットには、170 行が含まれます (SalesPerson テーブルは 17 行、SalesTerritory テーブルは 10 行あるので、17 に 10 を掛けると 170 行になります)。

ただし、WHERE 句を追加した場合、クロス結合の動作は内部結合の場合と同じになります。たとえば、次の 2 つの Transact-SQL クエリでは同じ結果セットが生成されます。

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;

参照

概念

式における演算子の使用

その他の技術情報

WHERE (Transact-SQL)
SELECT (Transact-SQL)
演算子 (Transact-SQL)
SELECT の例 (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

変更内容 :
  • 例を変更し、異なるテーブルを使用するようにしました。