Hallo Wissende,
gegeben sei eine Tabelle nach folgendem Muster:
ID Linie Tour Station an ab Tacho
1 A A1 Busbahnhof 07:30 0,000
2 A A1 Burgplatz 07:31 07:32 0,365
3 A A1 Bahnhof 07:34 07:35 0,745
4 A A1 Schmidtweg 07:38 07:39 1,043
5 A A1 Goetheallee 07:42 - 1,435
6 A A2 Busbahnhof - 08:30 0,000
7 A A2 Burgplatz 08:31 08:32 0,365
8 A A2 Bahnhof 08:34 08:35 0,745
9 A A2 Schmidtweg 08:38 08:39 1,043
10 A A2 Goetheallee 08:42 - 1,435
so geht es noch viele tausend Zeilen weiter (natürlich auch andere Linien).
Es soll nun eine Abfrage auf nicht die Haltestellen, sondern auf die Strecke fokussieren, also
Linie Tour von Station nach Station ab an Entf.
A A1 Busbahnhof Burgplatz 07:30 07:31 0,365
A A1 Burgplatz Bahnhof 07:32 07:34 8,380
A A1 Bahnhof Schmidtweg 07:35 07:38 0,298
A A1 Schmidtweg Goetheallee 07:39 07:42 0,392
Ich weiß, dass man dafür die Basistabelle mit sich selbst verknüpfen muss, um ans Ziel zu kommen. Aber ich kriegs nicht hin - immer wenn es um solche In-sich-Verschachtelumgem geht, fehlen mir ein paar Gehirnzellen...
Ich bin sehr dankbar wenn ich nur einen kleinen Anstoß bekomme.
Viele Grüße
Hans-Jürgen
Hallo Hans-Jürgen,
dann suchst du die "größte ID welche kleiner ist als die aktuelle ID". Das kannst du mit einem Subselect machen und dann die Differenz bilden.
Knobbi38
Hallo Knobbi,
vielen Dank erstmal, ich werde das nachher mal ausprobieren und wenn es schiefgeht, würde ich mal die Abfrage soweit wie möglich hier reinschreiben und um Korrektur bitten. Ich lasse das solange noch als "unsolved".
Vielen Dank
Hans-Jürgen
Hallo nochmal,
es war nicht einfach, auch mit dem Hinweis von Knobbi, aber ich habs geschafft. Puh. Es heißt ja: Das Internet vergisst nichts - deswegen poste ich das SQL-Statement, falls ich es mal brauche (oder sich jemand anderes für diese Mechanik interessiert:
SELECT
F1.Linie,
F1.Tour,
F1.Station AS von,
F2.Station AS nach,
F1.ab AS Abfahrt,
F2.an AS Ankunft,
F2.Tacho - F1.Tacho AS Entfernung
FROM
Fahrplan F1
INNER JOIN Fahrplan F2 ON F1.ID + 1 = F2.ID
WHERE
F2.Tacho - F1.Tacho > 0
Aus dem "kleiner" musste ich machen "F1.ID + 1 = F2.ID", denn sonst kämen alle nachfolgenden möglichen Verbindungen und nicht nur die nächste. Das Where ist nötig, weil sonst auch die Leerfahrt von der Goethealle zum Busbahnhof drin gewesen wäre.
Danke Knobbi, ich habe nicht nur das Problem gelöst, sondern auch noch was dran gelernt.
Viele Grüße
Hans-Jürgen
Nachtrag: Statt der Bedingung mit der Entfernung kann man auch abfragen, ob die Tournummern gleich sind. Ist sicherlich stilvoller.