2 Tabellen mit DATETIME mit JOIN verbinden

Beschäftige mich derzeit mit folgendem Problem.

Ich habe 2 mySQL Tabellen

1xKlimadaten (tabelle1) aus meiner Wetterstation (TFA Nexus), welche direkt aus einem DBase File importiert werden (bis heute ca.25000 Datensätze).

pk Zeitpunkt InTemp InRF InTD S1Temp S1RF S1TD
22533 2012-01-12 19:41:59 25.8 41 11.5 6 84 3.5
22532 2012-01-12 19:12:00 25.6 41 11.4 6.1 85 3.8
22531 2012-01-12 18:42:00 25.4 41 11.2 6 86 3.8
22530 2012-01-12 18:11:59 25 41 10.8 6 87 4

1xVerbrauchswerte (tabelle2) meiner Gasheizung (233 Datensätze).
pk Zeitpunkt ZStand Verbrauch Brennwert Zustandszahl KWH EUR_KWH
4 2010-09-04 00:00:00 529.66 15.67 11.201 0.947 166.22 0.0566
5 2010-09-09 00:00:00 538 8.34 11.201 0.947 88.47 0.0566
6 2010-09-14 00:00:00 543 5 11.201 0.947 53.04 0.0566

Aus den beiden Tabellen soll eine Tabelle aufgebaut werden, welche mir die durchschnittliche Temperatur und den Verbrauch im Monat/Jahr oder Tag im Monat
Mir ist klar das ich die Tabellen Joinen muss aber was ist die Referenz? YEAR(tabelle1.Zeitpunkt)=YEAR(tabelle2.Zeitpunkt) hab ich schon probiert, daß schiesst meinen Server ab.
Versuch, allerdings ohne Erfolg:
SELECT YEAR( k.Zeitpunkt) , MONTH(t1.Zeitpunkt), AVG( S1Temp ) , Max( S1Temp ) , Min( S1Temp ) , SUM(t2.Verbrauch) FROM tabelle1 as t1
LEFT OUTER JOIN tabelle2 as t2 ON (YEAR(t1.Zeitpunkt) = YEAR(t2.Zeitpunkt) AND MONTH(t1.Zeitpunkt) = MONTH(t2.Zeitpunkt)) GROUP BY YEAR( k.Zeitpunkt ) , MONTH( k.Zeitpunkt )

Mit der Thematik habe bislang noch keine passenden Eintrag gefunden
Ich stehe echt auf dem Schlauch…

Moin, Miketor,

wenn mit Year verknüpft wird, entsteht als Kreuzprodukt eine riesengroße Teilmenge. Besser eignet sich vermutlich Date, weil die Verbrauchswerte einmal täglich erfasst werden, dafür solltest Du aber vorher die Klimadaten so umrechnen, dass für jeden Tag nur noch ein (durchschnittlicher?) Messwert vorliegt.

Gruß Ralf

Hab das mal ausprobiert, mit folgendem Ergebnis.

SQL-Befehl: SELECT YEAR( t1.Zeitpunkt ) , MONTH( t1.Zeitpunkt ) , AVG( t1.S1Temp ) , Max( t1.S1Temp ) , Min( t1.S1Temp ) , SUM( t2.Verbrauch ) FROM klima AS t1 LEFT OUTER JOIN heizenergie AS t2 ON DATE(t1.Zeitpunkt) = DATE(t2.Zeitpunkt ) GROUP BY YEAR( t2.Zeitpunkt ) , MONTH( t2.Zeitpunkt ) LIMIT 0 , 30;
Zeilen: 10

YEAR( t1.Zeitpunkt ) MONTH( t1.Zeitpunkt ) AVG( t1.S1Temp ) Max( t1.S1Temp ) Min( t1.S1Temp ) SUM( t2.Verbrauch )
2011 9 19.0367149044828 44.5 -6.1 NULL
2011 5 19.7916667196486 25.5 13.5 187.199993133545
2011 6 18.6002601944459 30.3 11.8 1181.60001975298
2011 7 19.275972240501 31.3 13.5 863.999987125397
2011 8 20.806343719896 33.5 0 1097.01999598742
2011 9 18.443195921361 27.6 0 622.280005410314
2011 10 11.3193762555432 24.4 -0.1 701.239997208118
2011 11 6.06513888767093 17.4 -2.7 3873.60000640154
2011 12 5.57350771706289 14.2 -2 7722.27004337311
2012 1 6.47048612145914 12.9 1.5 2803.20001602173

Die richtige Werte sind jedoch:

YEAR(Zeitpunkt) MONTH(Zeitpunkt) SUM(Verbrauch)
2010 4 0
2010 8 512.989995121956
2010 9 40.0100002288818
2010 10 127
2010 11 219
2010 12 284
2011 1 243
2011 2 186
2011 3 150
2011 4 16.8000002726912
2011 5 13.4999999552965
2011 6 8.20000013709068
2011 7 5.99999991059303
2011 8 7.57999997213483
2011 9 4.32000003755093
2011 10 14.4999999403954
2011 11 80.7000001333654
2011 12 160.800000905991
2012 1 58.400000333786

Moin, MikeTor,

wenn die Select-Klausel 6 Werte verlangt, dann liefert die Query keine 3 Spalten, sondern 6.

Gruß Ralf

ps: Spaltenrichtige Anzeige erreichst Du mit dem pre-Tag.

Das mit den 3 Spalten versteh ich jetzt nicht
Was hat das mit meiner falschen Summe zu tun

Moin,

Das mit den 3 Spalten versteh ich jetzt nicht

das ist der einzige Unterschied, der sofort ins Auge fällt.

Was hat das mit meiner falschen Summe zu tun

Nix für ungut, aber Du glaubst doch nicht, dass ich mir ein Spaltenlineal in die Pupille schleife, um in diesem Verhau die 2 Zahlen zu finden, die voneinander abweichen.

Gruß Ralf