Hallo,
angenommen ich habe eine Tabelle wie die Folgende zur Speicherung irgendwelcher Messdaten:
Ich möchte aus so einer Tabelle gerne von 3 unterschiedlichen Sensoren jeweils den neusten Datensatz abfragen, der den Zeitpunkt der Messung sowie 2 Werte enthält. Es steht allerdings nicht fest, von welchen 3 Sensoren jeweils der neuste Datensatz abgefragt werden soll, sondern es sollen die neusten Datensätze der Sensoren sein, zu denen die neusten Ergebnisse vorliegen. Ist irgendwie blöd zu erklären, ich weiß... Welche 3 Datensätze das in der Beispieltabelle wären, habe ich durch gelbe Hinterlegung kenntlich gemacht.
Ich habe schon an folgende Abfrage gedacht:
Tatsächlich erhalte ich zu 3 unterschiedlichen Sensoren den Zeitpunkt der neusten Messung. Es werden auch die richtigen Sensoren ausgewählt, sprich die mit den neusten Ergebnissen. Leider gehören aber die Angaben zu WertA und WertB nicht zum Datensatz mit MAX(Zeit), sondern zu dem Datensatz mit MIN(Zeit). Die Datensätze, die mit der Abfrage aggregiert werden, sind also "zusammengewürfelt".
Daher kam ich auf die Idee, dass man die Daten zunächst absteigend nach Zeit sortieren müsste, ehe man GROUP BY anwendet, um so die neusten Werte zu erhalten, aber das funktioniert nicht.
Nachtrag: Es geht um MySQL.
Hat jemand einen Rat für dieses kniffelige Problem? Ich glaube ich stehe irgendwie auf dem Schlauch!
Danke euch schon mal!
Grüße,
micromumpitz
angenommen ich habe eine Tabelle wie die Folgende zur Speicherung irgendwelcher Messdaten:
Ich möchte aus so einer Tabelle gerne von 3 unterschiedlichen Sensoren jeweils den neusten Datensatz abfragen, der den Zeitpunkt der Messung sowie 2 Werte enthält. Es steht allerdings nicht fest, von welchen 3 Sensoren jeweils der neuste Datensatz abgefragt werden soll, sondern es sollen die neusten Datensätze der Sensoren sein, zu denen die neusten Ergebnisse vorliegen. Ist irgendwie blöd zu erklären, ich weiß... Welche 3 Datensätze das in der Beispieltabelle wären, habe ich durch gelbe Hinterlegung kenntlich gemacht.
Ich habe schon an folgende Abfrage gedacht:
Code:
SELECT DatensatzID, SensorID, MAX(Zeit) AS Zeitpunkt, WertA, WertB FROM tabelle GROUP BY SensorID ORDER BY Zeitpunkt DESC LIMIT 3
Daher kam ich auf die Idee, dass man die Daten zunächst absteigend nach Zeit sortieren müsste, ehe man GROUP BY anwendet, um so die neusten Werte zu erhalten, aber das funktioniert nicht.
Nachtrag: Es geht um MySQL.
Hat jemand einen Rat für dieses kniffelige Problem? Ich glaube ich stehe irgendwie auf dem Schlauch!
Danke euch schon mal!
Grüße,
micromumpitz
Kommentar