Cross Joins
Ein Cross-Join erzeugt das Full-Set-Produkt der beiden Datenquellen.Dies bedeutet, dass jede Zeile in der linken Quelle erfolgreich mit jeder Zeile in der rechten Quelle abgeglichen wird.
<cross-join> ::= {CROSS JOIN | ,} <source>
Bitte beachten Sie, dass die Kommasyntax veraltet ist!Es wird nur unterstützt, um die Funktionsfähigkeit des Legacy-Codes aufrechtzuerhalten, und kann in einer zukünftigen Version verschwinden.
Das Kreuzverknüpfen zweier Mengen ist äquivalent dazu, sie auf einer Tautologie zu verbinden (eine Bedingung, die immer wahr ist).Die folgenden beiden Aussagen haben die gleiche Wirkung:
select * from TA
cross join TB;
select * from TA
join TB on 1 = 1;
Cross-Joins sind Inner-Joins, da sie nur übereinstimmende Datensätze enthalten – es kommt einfach vor, dass jeder Datensatz übereinstimmt!Ein Outer-Cross-Join, falls vorhanden, würde dem Ergebnis nichts hinzufügen, da die hinzugefügten Outer-Joins nicht übereinstimmende Datensätze sind und diese in Cross-Joins nicht vorhanden sind.
Cross-Joins sind selten sinnvoll, außer wenn Sie alle möglichen Kombinationen von zwei oder mehr Variablen auflisten möchten.Angenommen, Sie verkaufen ein Produkt in verschiedenen Größen, Farben und Materialien.Wenn diese Variablen jeweils in einer eigenen Tabelle aufgeführt sind, würde diese Abfrage alle Kombinationen zurückgeben:
select m.name, s.size, c.name
from materials m
cross join sizes s
cross join colors c;