![]() |
Fortgeschrittene Jointechniken:
|
Bisher haben wir in allen Beispielen in der JOIN-Bedingung nur den Gleichheitsoperator "=" verwendet. Der Thetajoin ist eine Verallgemeinerung dieses Falles, als Bedingung können auch andere Operatoren, z.B. die Vergleichsoperatoren verwendet werden. Der Equijoin (Bedingung: Gleichheit) ist ein Spezialfall des Thetajoins.
Sie haben eine Tabelle mit Teams und möchten diese in einer Einfachrunde gegeneinander antreten lassen (Das Heimrecht sei irrelevant). Ein Thetajoin liefert Ihnen alle Begegnungen:
Tabelle "Teams": T_ID Team ----------- ---------- 1 Hamburg 2 München 3 Berlin 4 Köln *-------------------------------------------------------------* SELECT h.Team AS Heim, g.Team AS Gast FROM Teams AS h INNER JOIN Teams AS g ON h.T_ID > g.T_ID Heim Gast ---------- ---------- München Hamburg Berlin Hamburg Köln Hamburg Berlin München Köln München Köln Berlin (6 row(s) affected)
Genauso wie Sie Aliasnamen für Tabellen anlegen können, wie im Abschnitt
Selfjoin vorgestellt, können Sie mit AS unterschiedliche Spaltenüberschriften erzeugen. Dies ist insbesondere dann nützlich, wenn zweimal auf gleichnamige Spalten zugegriffen wird. Der Selfjoin ermöglicht die Auswahl beider am Spiel beteiligten Mannschaften aus der Tabelle "Teams"; der Vergleichsoperator > sorgt dafür, dass es nicht zu Begegnungen einer Mannschaft mit sich selbst kommt und jede Mannschaft nur einmal auf einen bestimmten Gegner trifft.
Für eine Doppelrunde mit Hin- und Rückspiel nehmen Sie einfach den Ungleichheitsoperator <>:
SELECT h.Team AS Heim, g.Team AS Gast FROM Teams AS h INNER JOIN Teams AS g ON h.T_ID <> g.T_ID Heim Gast ---------- ---------- München Hamburg Berlin Hamburg Köln Hamburg Hamburg München Berlin München Köln München Hamburg Berlin München Berlin Köln Berlin Hamburg Köln München Köln Berlin Köln (12 row(s) affected)
Thetajoins sind selten. Wenn sie auftreten, dann häufig wie hier in den Beispielen in Kombination mit dem Selfjoin.
© 2007
Impressum, für diese Seite:
vinzenzmai@web.de