Wert von vorheriger Zeile auslesen

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

webana

Mitglied
19 März 2012
139
5
18
Im Allgäu
Hallo,

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?

Gruß Alex
 

threadi

Moderator
Team
Moderator
20 Oktober 2006
15.306
289
83
Leipzig
www.comedy-news.de
Binde die Tabelle doppelt ein. Beispiel:
Code:
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.
 

webana

Mitglied
19 März 2012
139
5
18
Im Allgäu
Hallo,

hier mal ein Beispiel:

Code:
id    zeit            x    y
4    2016-12-03 12:30:00    12    100
3    2016-11-29 17:50:00    18    90
2    2016-11-27 05:40:00    9    45
1    2016-11-25 20:00:00    17    100
Jetzt benötige ich zur Berechnung der Differenz die Zeit von id1 und id 2 damit ich mit x und y weiter rechnen kann.

Ps.: Also doch jetzt lieber eine weitere spalte und dann dort das datum von der letzten id auslesen und mit den anderen aktuellen werten speichern?

Gruß Alex
 
J

JPM

Guest
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..))
 

threadi

Moderator
Team
Moderator
20 Oktober 2006
15.306
289
83
Leipzig
www.comedy-news.de
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.

Ich würde das wie gesagt eher inhaltlich lösen :)
 
Werbung:

Latest posts