Peter Grahl: wo ist der Fehler?

Beitrag lesen

Hallo,

ich habe drei Tabellen:

tab_datum:
id|datum

tab_a:
datum_id|wert_a

tab_b:
datum_id|wert_b

Eine Abfrage wie:

select year(datum) as group_a, month(datum) as group_b, sum(wert_a) from tab_a, tab_datum
where tab_datum.id=tab_a.datum_id
and tab_datum.datum >= '2007-01-01' group by group_a, group_b

funktioniert einwandfrei (genauso natürlich mit tab_b)!

Wenn ich aber die Daten zusammenfassen möchte, kommen horrende (zu große Zahlen) raus, d.h. irgendwie sieht es nach einem Kreuzprodukt aus, das wohl irgendwie an der Gruppierung liegt:

select year(datum) as group_a, month(datum) as group_b, sum(wert_a), sum(wert_b) from tab_a, tab_b, tab_datum
where tab_datum.id=tab_a.datum_id
and tab_datum.id=tab_b.datum_id
and tab_datum.datum >= '2007-01-01' group by group_a, group_b

Muß ich das in subselects formulieren?
Wo ist der Gedankenfehler bzw. was macht mysql an dieser Stelle genau?

Danke!!!