Halihallo Kalle
SELECT akt_adressen.nr nr, akt_adressen.name1 name, akt_adressen.plz plz, akt_adressen.ort_nr ort_nr, akt_adressen.ort ort, count(*) ct
FROM akt_adressen
LEFT OUTER JOIN termine
ON ( akt_adressen.nr = termine.veranstalter_nr )
WHERE termine.tag >= '".$tag_von."'
AND termine.tag <= '".$tag_bis."'
AND termine.loe_kz = 0
GROUP BY plz, name
Falls es zu einem Verein kein Termin gibt, werden die Attribute des
Termins mit NULL aufgefüllt. Die Konsequenz ist, dass die WHERE-
Bedingung nicht mehr zugrifft und _deshalb_ werden diese Vereine
dennoch nicht selektiert. LEFT OUTER JOIN funktioniert aber :-)
Vielleicht unterstützt deine Datenbank eine Art
IS_NULL(termine.id)
dann könntest du etwa folgende WHERE-Klausel entwerden:
... WHERE
IS_NULL(termine.id) OR
(
termine.tag >= '...' AND
termine.tag <= '...' AND
termine.loe_kz = 0
)
sprich: Entweder der Verein hat gar keinen Termin _oder_ er erfüllt
alle genannten "Termin-Eigenschaften".
Das war also nicht die Lösung.
Ich bringe dir nur Vorschläge. In die Lösung umsetzen, musst du schon
selber.
Hast du noch einen Tipp?
War der mit LEFT OUTER JOIN denn nicht gut?
Viele Grüsse
Philipp