Abfrage von 3 Tabellen mit MySQL (Fortsetzung)
Amigo
- datenbank
0 Amigo
Hallo,
ich hatte das Problem schon einmal veröffentlicht und bin durch die Antwort auch ein gutes Stück weiter gekommen. Allerdings habe ich immer noch ein Problem bei dem ich einfach nicht weiter komme.
Ich habe folgende Tabellen und Felder:
"Kunden" "Anmeldungen" "Vormerkungen"
id id id
name kd_id kd_id
plz Seminar Seminar
.. .. ..
Jeder Datensatz hat seine eindeutige id. Die Tabelle "Kunden" enthält alle Kunden. Das Feld kd_id der Tabellen "Anmeldungen" und "Vormerkungen" entspricht einer id in der Tabelle "Kunden". Soweit sollte alles klar sein.
Es kann durchaus vorkommen dass es in der Tabelle "Anmeldung" oder "Vormerkung" jeweils mehrere Einträge mit der gleichen kd_id gibt (wenn sich ein Kunde z.B. für verschiedene Seminare interessiert).
Nehmen wir an die Tabelle "Kunden" hat 150 Datensätze mit den id´s 1 bis 100.
Die Tabelle "Anmeldungen" enthält Datensätze mit den Werten 5,15,25,35,10,10,10 im Feld kd_id.
Die Tabelle "Vormerkungen" enthält Datensätze mit den Werten 10,20,5,5 im Feld kd_id.
Ich möchte als Ergebnis eine Liste die alle Kunden enthält. Und zwar so oft wie auch kd_id´s darin vorkommen. Der Kunde mit der id 5 soll also 3 mal erscheinen. Der Kunde mit der id 10 4 mal.
Im Moment habe ich dass Problem bei folgender Abfrage
SELECT *
FROM (kunden
LEFT JOIN anmeldungen ON kunden.id = anmeldungen.kunde LEFT JOIN vormerkungen ON kunden.id = vormerkungen.kd_id)
WHERE (anmeldungen.kunde = "5" OR anmeldungen.kunde = "10") OR (vormerkungen.kd_id = "10" OR vormerkungen.kd_id = "5")
nur zwei mal den Kunden mit der ID 5 und 3 mal den Kunden mit der id 10 bekomme. Dies liegt wahrscheinlich daran dass bei ersten JOIN das Ergebnis zu stark reduziert wird. Es kann ja durchaus sein das 5 Anmeldungen und 50 Vormerkungen (oder umgekehrt) vorliegen.
Eigentlich müsste man die Tabellen "Anmeldungen" und "Vormerkungen" so zusammenführen dass jeweils jeder darin enthaltene Datensatz einmal im Ergebnis vorkommt und dies Ergebnis mit der Tabelle "Kunden" JOINEN. Nur wie? Ich kapiere das irgendwie nicht.
Eingesetzte Datenbank MySQL Version 4.0.24
Vielen Dank schon mal im voraus an den der sich das alles durchgelesen hat!
Hier nochmal die Struktur. Ich hogge man kann es jetzt besser sehen:
"Kunden" "Anmeldungen" "Vormerkungen"
id id id
name kd_id kd_id
plz Seminar Seminar
.. .. ..