Aggregation Problem

Aggregation Problem

am 31.03.2006 22:28:54 von christoph.soellner

Hi *,

ich habe zwei Tabellen, kunden und kunden_verbaende.

kunden: kunden_verbaende
---------------- ------------------
ID name kdnr PLZ kd_ID verb_name


Ich möchte jetzt wissen, wieviele Kunden jeweils
einem Verband angehören, aber es soll jeder Ver-
band aufgelistet werden (ggf. mit 0 Kunden):
### VERB1 20
### VERB2 0
### VERB3 67 etc.

SELECT
count(DISTINCT kunden.kdnr) AS anzahl,
verband_name
FROM kunden LEFT
JOIN kunden_verbaende ON kunden_verbaende.kd_ID=kunden.ID
WHERE plz LIKE '81%'
GROUP BY verband_name

Wenn ich das mit allen mache, tut das auch; wenn
ich jetzt aber per PLZ einschränke in der WHERE-Clause,
dann werden einige Verbände gar nicht mehr ausgewählt,
weil in dem PLZ-Gebiet der Verband nicht drin ist,
also steht da statt "VERB2 0" gar keine Zeile.

Wie schaffe ich da Abhilfe, ohne, dass ich mehrere
SELECTs machen muss? Geht das überhaupt? Danke,
Christoph

Re: Aggregation Problem

am 01.04.2006 03:43:46 von Stefan Rybacki

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christoph Soellner schrieb:
> Hi *,
>
Hi

> SELECT
> count(DISTINCT kunden.kdnr) AS anzahl,
> verband_name
> FROM kunden LEFT
> JOIN kunden_verbaende ON kunden_verbaende.kd_ID=kunden.ID
> WHERE plz LIKE '81%'
> GROUP BY verband_name

Irgendwie hat das nichts mit Aggregation zu tun? Egal versuch mal das:

SELECT
count(DISTINCT kunden.kdnr) AS anzahl,
verband_name
FROM kunden LEFT
JOIN kunden_verbaende ON kunden_verbaende.kd_ID=kunden.ID
WHERE plz LIKE '81%'
GROUP BY verband_name

SELECT
count(DISTINCT kunden.kdnr) AS anzahl,
verband_name
FROM kunden LEFT
JOIN kunden_verbaende ON kunden_verbaende.kd_ID=kunden.ID AND (plz LIKE
'81%')
GROUP BY verband_name

Bis denn dann
Stefan
>...
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (MingW32)

iD8DBQFELdrSyeCLzp/JKjARAmCCAKDFceh68ZyytPtOaXuPLD6pyXkeiQCf QW2u
+eH01aB6ZXTRqCFxPPim3AI=
=vfvX
-----END PGP SIGNATURE-----