Hey,
sorry, mir ist kein sinniger Titel eingefallen, deswegen hat mir Google schon nicht weiter helfen können
Ich vereinfache mal mein Problem, ich habe 2 Tabellen:
table1: id, jahr, wert
table2: id, land
Ich hätte gern die gezählten Werte, gruppiert nach Jahr und Land, sieht dann so aus:
select t1.jahr, t2.land, count(t1.wert) as sum
from table1 t1
join table2 t2
on t1.id = t2.id
where t1.jahr between 1995 and 2005
and t2.land in (‚DE‘, ‚US‘, ‚JP‘)
group by t1.jahr, t2.land;
Existieren keine Matches zu einem Jahr, werden diese in meinem Resultset nicht angezeigt, die sehen dann z.B. so aus:
1995 DE 5
1997 DE 3
1998 DE 2
.
.
.
Ich hätte aber gern, dass mir alle Jahre angezeigt werden (also zwischen 1995 und 2005) und eben eine 0 bei sum, wo keine Werte vorhanden sind.
Nun dachte ich, mach ich das einfach mit einem left join, die Abfrage wäre dann so:
select t1.jahr, t2.land, count(t1.wert) as sum
from table1 t1
left join table2 t2
on t1.id = t2.id
where t1.jahr between 1995 and 2005
and t2.land in (‚DE‘, ‚US‘, ‚JP‘)
group by t1.jahr, t2.land;
Nur wird mir leider genau das gleiche angezeigt.
Ich schätze, ich habe irgendwo einen ziemlich dummen Denkfehler, komme aber nicht drauf, was es ist. Achso, in t1 sind auf jeden Fall alle Jahreszahlen drin, nur eben nicht unter den Bedingungen, die die Abfrage braucht.
Kann mir jemand nen Tipp geben?
Danke
lg Nadine