Forum: Datenbanken
by Jürgen Thomas,
17. Aug 2009
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...
Forum: Datenbanken
by Jürgen Thomas,
17. Aug 2009
Hallo Detlef,
diese Lösung ist faktisch identisch mit meiner in #5. Das MIN kann in der Tat entfallen. Ich hatte die MAX-Abfrage in die ON-Bedingung eingebaut, während du sie in die HAVING-Klausel verschoben hast. Da dürfte mein Verfahren noch etwas effektiver sein (auch wenn es nicht so schön aussieht und der Feststellung in meiner anderen Diskussion widerspricht, was zur ON-Bedingung und was...
Forum: Datenbanken
by Jürgen Thomas,
17. Aug 2009
Hallo Detlef,
klappt leider genausowenig wie meine früheren Versuche. Zum einen muss noch "where a.Datum > b.Datum" hinzugefügt werden; es kommt aber immer die Ausgabe mit 3 Zeilen (wie oben), weil die MAX-Bedingung fehlt.
Die Fahrzeug_ID steht in einer anderen Tabelle, die alle Fahrzeuge zu einem Schadensfall verknüpft; aber das können wir im Moment vernachlässigen und so tun, als stünde...
Forum: Datenbanken
by Jürgen Thomas,
17. Aug 2009
So, ich habe jetzt alles ausprobiert und eure Tipps berücksichtigt und habe das gewünschte Ergebnis erhalten:
select a.Datum, b.Datum, a.Datum - b.Datum
from Schadensfaelle a
join Schadensfaelle b
on b.Datum = ( select max(c.Datum) from Schadensfaelle c where a.Datum > c.Datum )
MAX deshalb, weil aus c das größte Datum gesucht wird, das kleiner als a.Datum ist.
DATUM DATUM1 ...
Forum: Datenbanken
by Jürgen Thomas,
16. Aug 2009
DISTINCT klingt gut, danke! Jürgen