Hallo allerseits,
als leider nur rudimentär Wissender benötige ich Hilfe bei der Erstellung einer Query. Falls mein Anliegen längst beantwortet wurde, bitte ich um Nachsicht, da ich nicht einmal weiß, nach was ich in einer Forumsuche suchen soll.
Gegeben ist ein Ausschnitt aus einer Tabelle:
+---------------------+-------------+-------+------------------------------------+----------------------------+--------+------+
| TIMESTAMP | DEVICE | TYPE | EVENT | READING | VALUE | UNIT |
+---------------------+-------------+-------+------------------------------------+----------------------------+--------+------+
| 2020-11-13 19:26:02 | DatabaseLog | DBLOG | CacheUsage: 2 | CacheUsage | 2 | |
| 2020-11-13 19:26:02 | DatabaseLog | DBLOG | background_processing_time: 0.0152 | background_processing_time | 0.0152 | |
| 2020-11-13 19:26:02 | DatabaseLog | DBLOG | sql_processing_time: 0.0042 | sql_processing_time | 0.0042 | |
| 2020-11-13 19:26:02 | DbLog | DBLOG | CacheUsage: 145 | CacheUsage | 145 | |
+---------------------+-------------+-------+------------------------------------+----------------------------+--------+------+
Es sollen alle Zeilen gelöscht werden
● in denen das Attribut `DEVICE` den Wert „DatabaseLog“ hat
● und es eine andere Zeile gibt, in der
○ das Attribut `DEVICE` den Wert „DbLog“ hat
○ und das Attribut `TIMESTAMP` denselben Wert wie in der zu löschenden Zeile hat
○ und das Attribut `READING` denselben Wert wie in der zu löschenden Zeile hat.
Hier in dem Beispiel soll genau (und nur) die erste Zeile gelöscht werden.
Es gibt (außer in den Daten in der DB) keine Liste der betroffenen `READING`. Sie muss ggf. zur Laufzeit angelegt werden.
Fachlich falsch gelaufen ist, dass zu ein und demselben Zeitpunkt `TIMESTAMP` zwei `DEVICE` dasselbe `READING` in die DB geschrieben haben. Dabei ist das `DEVICE` „DatabaseLog“ das fehlerhafte und soll daher entfernt werden. Haben die `DEVICE` „DatabaseLog“ und „DbLog“ allerdings zum selben Zeitpunkt verschiedene `READING` geschrieben, sollen diese verschiedenen erhalten bleiben.
Anmerkung:
● Es gibt noch diverse andere `DEVICE` mit diversen anderen Namen; diese sind aber nicht betroffen.
● Es gibt noch diverse andere `READING` sowohl bei den diversen anderen `DEVICE` als auch bei den betroffenen `DEVICE` „DatabaseLog“ und „DbLog“. „CacheUsage“, „background_processing_time“ und „sql_processing_time“ sind zwar reale Werte, aber letztendlich nur Beispiele für andere mögliche…
Vielen Dank fürs Lesen, noch mehr würde ich mich natürlich über eine Antwort freuen! :-)
Marius