![]() |
Re: SELF JOIN - Beispiel konstruieren
Vielleicht mal ohne Self Join?
SQL-Code:
Select A.Datum,
(Select Min (B.Datum - A.Datum) From Schadensfaelle B Where B.Datum>A.Datum) as AbstandZumNaechstenSchadensfall From Schadensfaelle A |
Re: SELF JOIN - Beispiel konstruieren
Da fehlt aber noch B.Datum ;)
|
Re: SELF JOIN - Beispiel konstruieren
Wozu braucht man denn B.Datum, wenn sich das aus A.Datum + Differenz ergibt und es berechnete Felder in Delphi gibt und *lufhol* überhaupt?
Aber bitte :mrgreen: :
SQL-Code:
Select X.Datum as A-Datum,
X.Datum+AbstandZumNaechstenSchadensfall as B-Datum, X.AbstandZumNaechstenSchadensfall From ( Select A.Datum, (Select Min (B.Datum - A.Datum) From Schadensfaelle B Where B.Datum>A.Datum) as AbstandZumNaechstenSchadensfall From Schadensfaelle A ) X |
Re: SELF JOIN - Beispiel konstruieren
Er möchte in seiner Ergebnismenge die beiden Daten sowie die Differenz haben.
|
Re: SELF JOIN - Beispiel konstruieren
Und ich möchte ein Beispiel für SELF JOIN konstruieren (so steht es auch im Titel)! Jedenfalls vom Thema und der Theorie her ist meine Problemstellung dafür schließlich geeignet, oder etwa nicht? Ein und dasselbe Feld aus zwei verschiedenen Datensätzen derselben Tabelle - das ist doch der Kern von SELF JOIN?!
Für die Fragestellung "Abstände zwischen den Vorfällen" genügt eigentlich die Differenz. Aber in der Ergebnistabelle sagt das nicht allzuviel aus; deshalb sollten beide Datumsangaben mit zurückgeliefert werden. Alles klar? Jürgen |
Re: SELF JOIN - Beispiel konstruieren
Ich würde von Detlefs Code in #6 ausgehen. So wie ich das sehe, wird lediglich einmal zu viel gegroupt. Wenn man nur nach der Fahrzeug-ID und a.Datum gruppiert und zusätzlich noch where a.Datum > b.Datum einfügt, müsste das klappen; statt b.Datum muss dann natürlich MAX(b.Datum) selektiert werden.
SQL-Code:
select a.Fahrzeug_Id, a.Datum, MAX(b.Datum), MIN(a.Datum - b.Datum)
from Schadensfaelle a join Schadensfaelle b on b.Fahrzeug_Id = a.Fahrzeug_Id where a.Datum > b.Datum group by a.Fahrzeug_Id, a.Datum |
Re: SELF JOIN - Beispiel konstruieren
Klappt, danke! Jürgen
|
Re: SELF JOIN - Beispiel konstruieren
Zitat:
Als Paradebeispiel für Self joins würde ich rekursive Tabellen nehmen, bei denen also eine Spalte ein FK auf den PK der Tabelle (Arbeiter->Vorgesetzter). Da bleibt einem nichts anderes übrig, als ein Self Join zu nehmen. |
Re: SELF JOIN - Beispiel konstruieren
Zitat:
![]() Zitat:
Danke jedenfalls nochmals für alle Hinweise! Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz