SQL: Verwendung eines kartesischen Produkts (Cross Join)

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Bei richtiger Anwendung können kartesische Produkte sehr nützlich sein. Anwendungen kartesischer Produkte liegen im Transponieren oder Pivotisieren und Entpivotisieren einer Ergebnismenge, das Erzeugen einer Folge von Werten und das Nachahmen einer Schleife.


So kann man z. B. aus einer Auflistung von Mannschaften Paarungen zusammenstellen. Es sollen alle Paarungen (inkl. Hin- und Rückrunde) zwischen allen Teams ausgegeben werden.

Lösung für Jet-SQL

Als Vorbereitung erstellen wir mithilfe der Tabelle dual eine Abfrage mit unseren Teams, und nennen diese vw_team.

SELECT 'Team A' AS team FROM dual
UNION  ALL
SELECT 'Team B' FROM dual
UNION  ALL
SELECT 'Team C' FROM dual
UNION  ALL
SELECT 'Team D' FROM dual
SELECT t1.team AS heim,
       t2.team AS gast
FROM   vw_team AS t1,
       vw_team AS t2
WHERE  t1.team < t2.team OR
       t1.team > t2.team
ORDER  BY 1, 2

Die Ausgabe schaut dann so aus:

heim gast
Team A Team B
Team A Team C
Team A Team D
Team B Team A
Team B Team C
Team B Team D
Team C Team A
Team C Team B
Team C Team D
Team D Team A
Team D Team B
Team D Team C



Zurück zur Übersicht