![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Master
![]() Registriert seit: 18.05.2000
Beiträge: 556
|
![]() Hallo !
Es geht um die Abfrage aus einer Datenbank. (Verwendet wir eine SQLite Datenbank, hab also wahrscheinlich nur die Standard-SQL Befehle zur Verfügung) Relevant sind hierbei prinzipiell zwei Tabellen (wobei ich jetzt nicht alle Felder darstelle): Tabelle1: +--------------+----------+-------+--------+ | DatensatzNr | DeviceID | Datum | Faktor | +--------------+----------+-------+--------+ | 1 | 1 | | 1 | | 2 | 1 | | 1 | Tabelle2: +-------------+-----------+-------+ | DatensatzNr | Timestamp | Value | +-------------+-----------+-------+ | 1 | 123 | 2 | | 1 | 124 | 3 | | 1 | 125 | 4 | | 1 | 126 | 5 | | 2 | 123 | 2 | | 2 | 124 | 3 | | 2 | 125 | 4 | | 2 | 126 | 6 | <- "falscher Wert" != 5 Konkret gehts darum: Aus einem Gerät wird in gewissen Abständen ein Datensatz ausgelesen. Dieser ist nach dem FIFO Prinzip organsiert, d.h. es fällt beim Speichern eines neuen Wertes der älteste hinaus. In der Datenbank wird immer der komplette Datensatz gespeichert, in Tabelle1 bekommt dieser eine eindeutige Nummer (DatensatzNr, ist PRIMARY KEY). (Datum ist der Zeitpunkt zu dem er ausgelesen wurde). In Tabelle2 werden dann die eigentlichen Werte des Datensatzes eingetragen. Da jetzt immer komplette Datensätze und nicht nur die neuen Werte gespeichert werden, sind die Werte bzw. Timestamps dann mehrfach vorhanden. Z.B. Timestamp 123 kommt in DatensatzNr 1 und 2 vor (und hat bei beiden den Wert 2, so wie es sein soll). Wenn alles stimmt, bekomm ich dann über ein DISTINCT beim Timestamp eine schöne Tabelle mit meinen kompletten Daten. Allerdings kann jetzt theoretisch auch der (Fehler)Fall eintreten, dass bei gleichen Timestamps unterschiedliche Werte stehen. Und genau hier komm ich im Moment mit meinem, in den letzten zwei Tagen wieder hervorgekramten, SQL-Wissen nicht weiter. Konkret will ich feststellen, ob alle Timestamps gleiche Werte haben. Wenn nicht, will ich feststellen können welcher Timestamp schuld ist und die Abweichung dann dem Benutzer anzeigen (das ganze läuft über ein selbst programmiertes Frontend). Wie kann ich das SAUBER lösen (d.h. so viel wie möglich direkt in SQL und nicht im Programm) ? Hoffe ich konnte mein Anliegen halbwegs verständlich formulieren ![]() besten Dank schon mal ! MasterX |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|