Teil von SELFHTML aktuell Teil von Artikel Teil von Datenbanken Teil von Fortgeschrittene Jointechniken

Fortgeschrittene Jointechniken:
Der Thetajoin

nach unten Thetajoin

Thetajoin

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.

Beispiel:

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)

Erläuterung:

Genauso wie Sie Aliasnamen für Tabellen anlegen können, wie im Abschnitt Seite 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)

Anmerkung:

Thetajoins sind selten. Wenn sie auftreten, dann häufig wie hier in den Beispielen in Kombination mit dem Selfjoin.

weiter Seite Anhang

zurück Seite Mehrere Tabellen mit JOIN verknüpfen - unterschiedliche Joinspalten

Teil von SELFHTML aktuell Teil von Artikel Teil von Datenbanken Teil von Fortgeschrittene Jointechniken

© 2007 bereichsübergreifende Seite Impressum, für diese Seite: E-Mail vinzenzmai@web.de