pagemaster1979
Neuer Benutzer
- Beiträge
- 4
Hallo,
ich muss zugeben, dass ich kein SQL Profi bin obwohl ich versuche alles selbst herauszufinden, komme ich nicht mehr weiter. Folgendes Problem:
Ich habe 2 Tabellen jeweils mit daten und einem timestamp wann die daten erfasst wurden.
Folgende Abfragen einzeln führen pro tabelle zu dem gewünschten ergebniss:
Gibt mir jeweils Datum, Wochentag, und die Anzahl der Zaehlungen aus:
SELECT date(timestamp) as Datum, CASE DATE_FORMAT(timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
sum(zaehlerstand)/100 as m³
FROM gaszaehler
GROUP BY Datum
Gleiches für für temperatur:
SELECT date(timestamp) as Datum, CASE DATE_FORMAT(timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
ROUND( avg(temperatur),2) as 'AVG Temp',
ROUND( max(temperatur),2) as 'MAX Temp'
FROM temperatur
where luftfeuchtigkeit < '100'
GROUP BY Datum
Nun ist das Ziel aber die temperatuten des jeweiligen Tages und den Zaehlerstand zusammenzuführen.
Wenn ich das über einen JOIN mache
SELECT date(gaszaehler.timestamp) as Datum, CASE DATE_FORMAT(gaszaehler.timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
sum(zaehlerstand)/100 as m³,
ROUND( avg(temperatur),2) as 'AVG Temp',
ROUND( max(temperatur),2) as 'MAX Temp'
FROM gaszaehler
JOIN temperatur
ON date(gaszaehler.timestamp) = date(temperatur.timestamp)
GROUP BY Datum'
Stimmen temperaturen und speziell auch der zaehlerstand nicht mehr. Der Zaehlerstand ist deutlich zu hoch, da ich vermute, dass jedem timetamp des datums alle alle anderen passenden timestamps zugeordnet werden.
Ist relativ schwer zu erklären.
Ich habe auch Screens der Abfragen inkl. Ergebniss dran.
Die Geschwindigkeit der Abfrage wäre nicht super relevant. Eig. möchte ich "nur" das Ergebnis der ersten beiden Abfragen (gaszaehler und temperatur) zusammenführen.
Hat jemand eine Idee?
Vielen Dank schon mal.
VG Mario
ich muss zugeben, dass ich kein SQL Profi bin obwohl ich versuche alles selbst herauszufinden, komme ich nicht mehr weiter. Folgendes Problem:
Ich habe 2 Tabellen jeweils mit daten und einem timestamp wann die daten erfasst wurden.
Folgende Abfragen einzeln führen pro tabelle zu dem gewünschten ergebniss:
Gibt mir jeweils Datum, Wochentag, und die Anzahl der Zaehlungen aus:
SELECT date(timestamp) as Datum, CASE DATE_FORMAT(timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
sum(zaehlerstand)/100 as m³
FROM gaszaehler
GROUP BY Datum
Gleiches für für temperatur:
SELECT date(timestamp) as Datum, CASE DATE_FORMAT(timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
ROUND( avg(temperatur),2) as 'AVG Temp',
ROUND( max(temperatur),2) as 'MAX Temp'
FROM temperatur
where luftfeuchtigkeit < '100'
GROUP BY Datum
Nun ist das Ziel aber die temperatuten des jeweiligen Tages und den Zaehlerstand zusammenzuführen.
Wenn ich das über einen JOIN mache
SELECT date(gaszaehler.timestamp) as Datum, CASE DATE_FORMAT(gaszaehler.timestamp,'%w')
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
ELSE 'fehler' END as Wochentag,
sum(zaehlerstand)/100 as m³,
ROUND( avg(temperatur),2) as 'AVG Temp',
ROUND( max(temperatur),2) as 'MAX Temp'
FROM gaszaehler
JOIN temperatur
ON date(gaszaehler.timestamp) = date(temperatur.timestamp)
GROUP BY Datum'
Stimmen temperaturen und speziell auch der zaehlerstand nicht mehr. Der Zaehlerstand ist deutlich zu hoch, da ich vermute, dass jedem timetamp des datums alle alle anderen passenden timestamps zugeordnet werden.
Ist relativ schwer zu erklären.
Ich habe auch Screens der Abfragen inkl. Ergebniss dran.
Die Geschwindigkeit der Abfrage wäre nicht super relevant. Eig. möchte ich "nur" das Ergebnis der ersten beiden Abfragen (gaszaehler und temperatur) zusammenführen.
Hat jemand eine Idee?
Vielen Dank schon mal.
VG Mario