FHEM Forum

FHEM => Sonstiges => Thema gestartet von: oelkanne am 12 Dezember 2023, 22:53:09

Titel: SQL Abfrage für Grafana
Beitrag von: oelkanne am 12 Dezember 2023, 22:53:09
Guten Abend,

Ich versuche meine FHEM Zählerdaten mit Grafana zu visualisieren.

Ziel ist es die Tagesdaten (LastDay) aus der Tabelle history und den heutigen Wert (Day) aus der Tabelle current von der MySQL Datenbank in EINER SQL Abfrage zu realisieren.

Als separate Abfragen habe ich bereits.
SELECT
  TIMESTAMP AS "time",
  cast(VALUE as float)
FROM history
WHERE
  $__timeFilter(TIMESTAMP) AND DEVICE ='ShellyEM3_1' AND READING = 'statEnergie_Gesamt_ElektrischDayLast'
ORDER BY TIMESTAMP
(liefert die Tageswerte der vergangenen Tage) und
SELECT
  TIMESTAMP AS "time",
  cast(VALUE as float)
FROM current
WHERE
     DEVICE ='ShellyEM3_1' AND  READING = 'statEnergie_Gesamt_ElektrischDay'
(Liefert den letzten heutigen Wert)

Die Frage ist, wie kann ich die beiden Abfragen zur einer machen (Subquery?), damit ich das Ergebnis als Reihe in Grafana darstellen kann?
Hat jemand eine Idee?
Titel: Aw: SQL Abfrage für Grafana
Beitrag von: DasQ am 13 Dezember 2023, 13:29:54
Sowas macht man normal über einen ,,join"

https://www.w3schools.com/sql/sql_join.asp
Titel: Aw: SQL Abfrage für Grafana
Beitrag von: ergerd am 13 Dezember 2023, 17:58:55
Bei einem Join hätte man 4 Spalten im Ergebnis. Ich glaube nicht, dass das gewünscht ist.

Mein Vorschlage wäre UNION:

SELECT
  TIMESTAMP AS "time",
  cast(VALUE as float)
FROM history
WHERE
  $__timeFilter(TIMESTAMP) AND DEVICE ='ShellyEM3_1' AND READING = 'statEnergie_Gesamt_ElektrischDayLast'
UNION
SELECT
  TIMESTAMP AS "time",
  cast(VALUE as float)
FROM current
WHERE
     $__timeFilter(TIMESTAMP) AND DEVICE ='ShellyEM3_1' AND  READING = 'statEnergie_Gesamt_ElektrischDay'
ORDER BY TIMESTAMP
Titel: Aw: SQL Abfrage für Grafana
Beitrag von: oelkanne am 13 Dezember 2023, 21:31:39
Jawoll ja, - UNION ist die Lösung! Danke ergerd