Databases Reference
In-Depth Information
Die Syntax für einen einfachen Selfjoin sieht wie folgt aus:
SELECT t1.<Spaltenname>, t2. <Spaltenname>
FROM <Tabelle>t1, <Tabelle>t2
WHERE t1 <SpalteX> = t2 <SpalteX>
In diesem Fall sind die Tabellen identisch, sie werden nur durch die Vergabe unterschied-
licher Aliasnamen virtuell zu unterschiedlichen Tabellen.
Wir werden die Tabelle order_history dreimal miteinander joinen. Als Alias vergeben wir
die Bezeichnungen h1 , h2 und h3 . Aus der Tabelle h1 holen wir uns das Datum der ersten
Bestellung, aus h2 das der zweiten Bestellung und aus h3 das dritte Datum. Das kann man
beliebig fortsetzen. Wir beschränken uns vorerst auf die ersten drei Bestellungen.
SELECT h1.riskID,
DATEDIFF ( day ,h1.Datum , h2.Datum )Tage_1_2,
DATEDIFF ( day ,h2.Datum , h3.Datum )Tage_2_3
FROM [dbo].[order_history]h1, [dbo].[order_history]h2, [dbo].[order_history]h3
where h1.riskID = h2.riskID
and h1.riskID = h3.riskID
and h1.lfdNr = 1
and h2.lfdNr = 2
and h3.lfdNr = 3
Das Ergebnis sehen Sie in Bild 16.2.
 Bild 16.2■
Ergebnis des Selfjoins
Bei diesem Selfjoin werden nur die Fälle ausgegeben, bei denen es auch mindestens drei
Bestellungen gibt. Es gibt aber Kunden, bei denen kein drittes Datum autritt. Die dritte
Tabelle h3 müssen wir deshalb mit einem OUTER JOIN verbinden.
 
Search WWH ::




Custom Search