Verknüpfung zweier Tabellen, abhängig von der ersten
Hallo,
ich habe u.a. folgende Tabellen in meiner Datenbank, mit der ich den Stromverbrauch und Stromproduktion meiner PV-Anlage erfasse:
CREATE TABLE `tarif` (
`tarif_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`tarif_zaehler_id` tinyint(3) unsigned NOT NULL,
`tarif_preis` decimal(5,4) NOT NULL,
`tarif_gueltigab` datetime NOT NULL,
PRIMARY KEY (`tarif_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `zaehler` (
`zaehler_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`zaehler_kurzname` varchar(8) COLLATE utf8_unicode_ci NOT NULL,
`zaehler_langname` varchar(22) COLLATE utf8_unicode_ci NOT NULL,
`zaehler_farbe` varchar(6) COLLATE utf8_unicode_ci NOT NULL,
`zaehler_methode` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`zaehler_id`),
UNIQUE KEY `zaehler_kurzname` (`zaehler_kurzname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `daten` (
`daten_id` int(3) unsigned NOT NULL AUTO_INCREMENT,
`daten_zaehler_id` tinyint(3) unsigned NOT NULL,
`daten_zeit` datetime NOT NULL,
`daten_wert` decimal(8,3) NOT NULL,
PRIMARY KEY (`daten_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Die Tabelle "Daten" enthält alle Zählerstände, "Zähler" die verschiedenen Zähler und "Tarif" die Tarife, die sich im Laufe der Zeit ändern.
Eine Monatsübersicht erstelle ich mir durch folgende Abfrage:
SELECT daten_zaehler_id, MAX( daten_wert ) AS max_zaehler, MONTH( CONVERT_TZ(daten_zeit, "+00:00", "+2:00") ) AS avg_monat, DAY( CONVERT_TZ(daten_zeit, "+00:00", "+2:00") ) AS avg_tag FROM daten WHERE daten_zaehler_id IN ( SELECT zaehler_id FROM zaehler WHERE zaehler_methode LIKE "diff" ) AND daten_zeit BETWEEN CONVERT_TZ("2014-07-31 00:00:00", "+00:00", "-2:00") AND CONVERT_TZ("2014-09-01 00:00:00", "+00:00", "-2:00") GROUP BY daten_zaehler_id, avg_monat, avg_tag ORDER BY daten_zeit .
Bisher habe ich den gültigen Tarif am 1. des Monats in einer Extraabfrage ermittelt und dann in PHP weiterverarbeitet. Nun ist es aber so, dass der Tarif sich nicht zum 1. ändert. Ich bräuchte also eine weitere Spalte "Tarif" in der Abfrage, die den aktuellen Tarif an dem Tag berücksichtigt. Ausschlaggebend dafür ist die Spalte "tarif_gueltigab" in der Tabelle "Tarif".
An dieser Stelle komme ich nicht weiter und würde mich über Hilfe freuen.
Grüße
Torsten