Datensätze ohne Änderung zum vorigen Wert löschen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuellen messwert
anwendung
datenbank
direkt vorhergehende messwert
duplikat
eigentliche messwert
einfache duplikat
erfassung
folge
folgenden aufbau
frage
gleichen wert liefern
interessieren
kenntnis
minute
sensor
spalte
tabelle
uhrzeit
zeitpunkt
-
Hallo,
heute habe ich eine Frage an alle SQL-Profis. Und zwar möchte ich eine Tabelle meiner Datenbank aufräumen. Die Tabelle speichert u.a. Temperaturen, den zugehörigen Zeitpunkt und hat folgenden aufbau:
Spalte 1: Id [Unsigned Integer], eindeutige, fortlaufende Id über alle Einträge
Spalte 2: Sensornummer [Unsigned Short], die Id des Sensors, von dem der Messwert stammt
Spalte 3: Messwert [Double], der eigentliche Messwert
Spalte 4: Zeit [DateTime], die Uhrzeit zu dem der Messwert aufgenommen wurde
Anfänglich habe ich alle 15 Minuten alle Sensoren abgefragt und die Werte gespeichert. Da unsere Fußbodenheizung ja träge ist, gibt es häufig innerhalb dieser Zeit keine Änderung des Messwertes. Da mich eigentlich nur die Einträge interessieren, bei denen sich der Messwert eines Sensors zum vorhergehenden geändert hat, habe ich die Erfassung jetzt entsprechend geändert:
- es wird zunächst für jeden Sensor der letzte Wert aus der Datenbank gelesen
- nur wenn der letzte Wert ungleich dem aktuellen Wert ist, wird in die DB gespeichert
Das funktioniert jetzt ganz gut. Allerdings habe ich in der Tabelle jetzt noch alle "Duplikate" der früheren Speicherart. Diese möchte ich löschen. Eine einfache Duplikat-Suche geht ja nicht, da ja die Sensoren durchaus regelmäßig den gleichen Wert liefern können. Es darf eben nur nicht in Folge passieren.
Die Aufgabe ist also:
Lösche alle Datensätze mit der ID = n, wenn der direkt vorhergehende Messwert oldX des Sensors y gleich dem aktuellen Messwert aktX ist.
Leider reichen meine bescheidenen SQL-Kenntnisse nicht aus das zu lösen. Ich Danke Euch!
DerBasti
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die einfachste Möglichkeit wäre sicherlich mit einem Script über die Datenbank zu gehen und die gewünschten Werte zu löschen.
-
Hallo horstexplorer,
daran hab ich auch schon gedacht. Nachdem Du das nun auch so vorgeschlagen hast, habe ich mal eine C# Anwendung geschrieben. Daten sind nun bereinigt! Hätte eben gedacht, dass es ganz einfach mit einer SQL abfrage gemacht gewesen wäre. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage