JustPaste.it

Benötige ich Unterabfragen zur Auswertung von Energieverbräuchen, wenn ich den Verbrauch mehrerer Wochen über jeweils 24 Stunden darstellen möchte

 

 

Hallo liebes Forum,

 

vielen Dank für die Freischaltung.

Ich bin gerade dabei, eine kleine Internetseite für die grafische Darstellung von Energieverbräuchen zu realisieren.

 

Die Ausgangssituation ist dabei eine CSV-Datei, die ich in die Datenbank importiert habe.

Die Tabelle sieht dabei wie folgt aus:

 

DROP TABLE IF EXISTS `energieverbrauch`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `energieverbrauch` (

  `zeitstempel` datetime NOT NULL,

  `wert` decimal(10,4) NOT NULL,

  PRIMARY KEY (`zeitstempel`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

 

 

Mit den Daten:

LOCK TABLES `energieverbrauch` WRITE;

/*!40000 ALTER TABLE `energieverbrauch` DISABLE KEYS */;

INSERT INTO `energieverbrauch` VALUES ('2022-06-01 01:00:00',5.5660),('2022-06-01 02:00:00',5.6710),

('2022-06-01 03:00:00',4.8690),('2022-06-01 04:00:00',5.3480),('2022-06-01 05:00:00',5.0180),

('2022-06-01 06:00:00',9.7580),('2022-06-01 07:00:00',1.8150), ... ganz viele Einträge

 

 

Meine Abfrage: 

$query = "select 

                            DATE_FORMAT(zeitstempel, \"%H\") as zeitstempel, 

                            wert as wert

                           

                            from energieverbrauch

                            where  zeitstempel between 

                            '2022-06-01 00:00:00' and '2022-06-02 00:00:00' ";

 

liefert mir die gewünschten Daten, die ich auf einer PHP-Seite mittels der Abfrage einlese und mit GoogleChart visualisiere.

 

Soweit funktioniert alles nach Plan. :-)

 

Jetzt möchte ich eine weitere Spalte hinzufügen, die mir die Daten eines anderes Tages darstellt.

Beispielweise den gleichen Tag aus den drei Wochen davor.  Ebenfalls über 24 Stunden.

 

Wenn ich mich nicht täusche, kann ich das auf zwei Möglichkeiten machen:

 

1) Auf der PHP-Seite realisiere ich dies über weitere Abfragen, deren Kriterium sich an der "Hauptabfrage" orientieren und das Datum zurückrechnen.

 

2) Ich realisiere dies in MySQL. Die jetzt dargestellte Form ist noch nicht korrekt, soll aber als "Diskussionsgrundlage" dienen:

 

select 

 

        DATE_FORMAT(zeitstempel, "%H") as zeitstempel, 

 

                (select wert from energieverbrauch where  zeitstempel between  '2022-07-26 00:00:00' and '2022-07-27 00:00:00') as wert,

 

                (select wert from energieverbrauch where  zeitstempel between   '2022-07-19 00:00:00' and '2022-07-28 00:00:00') as wert2

 

            from energieverbrauch

 

Hier ist das Problem, dass ich pro Unterabfrage mehrere Ergebnisse bekomme. Das kann ich auch nachvollziehen.

 

Meine Wunschvorstellung:

 

Zeitstempel Wert wert2 ...

01                 5.7     5.9

02                3.4     2.5

usw.

 

 

Meine Frage an euch: Kann ich - und wenn wie - die Unterabfrage so von der where-Klausel erweitern, dass ich auf den Zeitstempel der ersten Spalte zugreife und dann genau diesen einen Wert erhalte?

 

Andreas