MySQL Forums
Forum List  »  German

Verknüpfung zweier Tabellen, abhängig von der ersten
Posted by: Torsten Haupt
Date: August 24, 2014 06:50AM

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

Options: ReplyQuote


Subject
Views
Written By
Posted
Verknüpfung zweier Tabellen, abhängig von der ersten
1281
August 24, 2014 06:50AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.