codo
Grünschnabel
Hallo ich kämpfe mich als begeisterungsfähiger Laie gerade durch ein Problem.
Ich habe eine Datenbank in die 6 verschiedene Solarpanele ihre Werte mehrmals täglich einmelden. Unter anderem auch die max Wattstunden des Vortages.Um nun eine schöne grafische Auswertung zu bekommen würde ich gerne nur den jeweils letzen Wert eines Tages für die jeweilige Station anzeigen lassen und das, für die letzten 7 Tage. Den Wert den ich brauche lautet h22
Meine Lösungsansatz
liefert aber nur den letzten Eintrag eines Tages, da stehe ich leider an.
Wie kann ich das um die Daten der letzten Tage erweitern?
Danke
Ich habe eine Datenbank in die 6 verschiedene Solarpanele ihre Werte mehrmals täglich einmelden. Unter anderem auch die max Wattstunden des Vortages.Um nun eine schöne grafische Auswertung zu bekommen würde ich gerne nur den jeweils letzen Wert eines Tages für die jeweilige Station anzeigen lassen und das, für die letzten 7 Tage. Den Wert den ich brauche lautet h22
SQL:
CREATE TABLE `analog_data` (
`id` int(11) NOT NULL,
`datum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`imei` text NOT NULL COMMENT 'IMEI',
`imsi` text NOT NULL COMMENT 'IMSI',
`temp` int(11) NOT NULL COMMENT 'TEMP',
`h` int(11) NOT NULL COMMENT 'H',
`sta` int(11) NOT NULL COMMENT 'STA',
`fw` int(11) NOT NULL COMMENT 'FW',
`v` int(11) NOT NULL COMMENT 'V',
`i` int(11) NOT NULL COMMENT 'I',
`vpv` int(11) NOT NULL COMMENT 'VPV',
`ppv` int(11) NOT NULL COMMENT 'PPV',
`err` int(11) NOT NULL COMMENT 'ERR',
`last` int(11) NOT NULL COMMENT 'LAST',
`il` int(11) NOT NULL COMMENT 'IL',
`h19` int(11) NOT NULL COMMENT 'H19',
`h20` int(11) NOT NULL COMMENT 'H20',
`h21` int(11) NOT NULL COMMENT 'H21',
`h22` int(11) NOT NULL COMMENT 'H22',
`h23` int(11) NOT NULL COMMENT 'H23',
`swv` int(11) NOT NULL COMMENT 'SWV',
`ts` datetime NOT NULL COMMENT 'TS'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Meine Lösungsansatz
SQL:
SELECT datum AS letzter_tag, h22 AS endbetrag
FROM analog_data JOIN ( SELECT DATE_FORMAT(datum,'%Y-%m')
AS d, MAX(DATE_FORMAT(datum,'%d %H:%i:s'))
AS dmax FROM analog_data GROUP BY DATE_FORMAT(datum,'%Y-%m') ORDER BY NULL ) m
ON DATE_FORMAT(datum,'%Y-%m') = m.d AND DATE_FORMAT(datum,'%d %H:%i:s') = m.dmax
WHERE imei='12207001080743'
ORDER BY datum
liefert aber nur den letzten Eintrag eines Tages, da stehe ich leider an.
Wie kann ich das um die Daten der letzten Tage erweitern?
Danke
Zuletzt bearbeitet von einem Moderator: