Freigeben über


Verwenden von CROSS JOINs

Aktualisiert: 14. April 2006

CROSS JOINs, die keine WHERE-Klausel aufweisen, erzeugen das kartesische Produkt aus den an der Verknüpfung beteiligten Tabellen. So entspricht die Größe des Resultsets eines kartesisches Produkts der Anzahl der Zeilen in der ersten Tabelle multipliziert mit der Anzahl der Zeilen in der zweiten Tabelle. Im folgenden Beispiel wird ein Transact-SQL-CROSS JOIN dargestellt.

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

Das Resultset enthält 170 Zeilen (SalesPerson hat 17 und SalesTerritory hat 10 Zeilen; 17 multipliziert mit 10 ist gleich 170).

Wenn jedoch eine WHERE-Klausel hinzugefügt wird, verhält sich der CROSS JOIN wie eine innere Verknüpfung. So ergeben beispielsweise die folgenden Transact-SQL-Abfragen das gleiche Resultset.

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;

Siehe auch

Konzepte

Verwenden von Operatoren in Ausdrücken

Andere Ressourcen

WHERE (Transact-SQL)
SELECT (Transact-SQL)
Operatoren (Transact-SQL)
SELECT-Beispiele (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Geänderter Inhalt:
  • In den Beispielen werden andere Tabellen verwendet.