Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Verbindung mit nächstem Tabelleneintrag

Begonnen von hajott, März 25, 2026, 08:37:21

⏪ vorheriges - nächstes ⏩

hajott

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

Knobbi38

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

hajott

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

hajott

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

hajott

Nachtrag: Statt der Bedingung mit der Entfernung kann man auch abfragen, ob die Tournummern gleich sind. Ist sicherlich stilvoller.