habe eine Datenbank mit den Spalten id, zeit(DATETIME), x und y. Ich gebe die Daten per while aus.
Jetzt möchte ich ab der id 2 das ich die Differenz zwischen der Zeit von id 1 und 2, 2 und 3 usw… zur Weiterberechnung nutzen. Ist es möglich dies so abzufragen, oder muss ich beim eintragen den vorherigen wert auslesen und mit in den aktuellen speichern?
SELECT t1.*, DATEDIFF(t1.zeit, t2.zeit) zeitdifferenz
FROM tabelle t1
JOIN tabelle t2 ON t2.id = t1.id + 1
Allerdings solltest Du ein besseres Kritierum definieren für „vorherigen Wert“. Das mit der ID zu ermitteln ist keine gute Idee, weshalb mein Tipp hier nur als Ansatz gedacht sein sollte.
Habe das Thema bisschen verfolgt, weil ich mal was ähnliches geschrieben habe. Und mein Code sah im Prinzip ähnlich aus wie deiner. Okay, er hat noch überprüft ob es die Zeile mit der niedrigeren ID überhaupt gibt und ist rückwirkend alle IDs bis zur 1 zurückgegangen, aber an sich bin ich ziemlich gut mit der ID gefahren. Könntest du kurz erklären, welches Problem du in der Benutzung der ID siehst?
Vielen Dank…
((Ich mag es nicht, wenn so Themen in der Mitte plötzlich aufhören. Dafür bin ich zu sehr Bastler und Puzzler, um das ganze dann ohne Ergebnis zu sehen…))
Bei einer auto_increment-Spalte weist Du nie ob eine ID auch in Realzeit nach einer anderen ID erstellt wurde. Wenn quasi 2 Requests kurz hintereinander jeweils einen Datensatz erzeugen, kommt es drauf an welcher Request zuerst in der Datenbank angekommen war. Bei großen Anwendungen oder häufig frequentierten Tabellen kann das durchaus öfter mal passieren.
Zudem könnte, durch Manipulation des auto_increment-Wertes der Spalte eine ehemals gelöscht ID auch nochmal vergeben werden. Wenn derjenige, der so etwas ändert von der Programmierung der Anwendung nichts weis, kann es nach hinten losgehen.