Michi: MySQL > V.5.0 > GROUP_CONCAT mit WHERE ansprechen

Hi Selfhtmler,

meine Abfrage unter MySQL sieht wie folgt aus:

SELECT distinct kundennummer,GROUP_CONCAT(leistung) AS Leistungen,li_id,li_name
FROM logo_firma
INNER JOIN logo_form
ON logo_firma.li_id = logo_form.id_firma
LEFT JOIN logo_leistungen
ON logo_firma.li_id = logo_leistungen.id_firma
WHERE Leistungen LIKE 'Aquatraining'
GROUP BY  kundennummer

ich bekomme die Fehlermeldung:
#1054 - Unknown column 'Leistungen' in 'where clause'

Klar, Leistungen gibt es ja nicht als wirkliche Column-Spalte - sondern nur als GROUP_CONCAT-Zusammenstellung. Da stellt sich die Frage, wie ich Inhalte von GROUP_CONCAT abfrage!?

Wer kann mir dabei weiterhelfen?
Schönen Tag wünscht Michi

  1. Anhang...
    Ich habe es versucht und bekomme ein klares Ergebnis:

    WHERE leistung LIKE '%Aquatraining%'

    Fehlermeldungen treten nicht auf. Geht das einfacher?
    Michi

  2. yo,

    erst einmal zu den fehlern. das DISTINCT ist bei gruppierungen überflüssig, außerdem gibst du spalten aus (li_id,li_name), über die du nicht gruppiert hast. mysql hat da einen ganz schlechten weg gewählt, nimm also am besten alle spalten mit in die gruppierung, die du auch anzeigen willst und kenie aggregat-funktionen sind. falls durch das hinzunhemen der spalten nicht mehr der gewünschten gruppierung entspricht, musst du mit unterabfragen arbeiten.

    was die WHERE klausel betrifft, so ist das ein falscher ansatz, zum einen werden durch die aggregat-funktionen alle datensätze der jeweligen gruppierungen der spalte leistung als eine ausgabespalte zusammengefasst. dort können also mehrere einträge als nur 'Aquatraining' stehen, zumal du auch nicht sortiert hast. Es bleibt die frage, was du überhaupt machen willst, das ist mir nämlich noch nicht ganz klar, zumal diese verwendung von LIKE besser wäre mit dem '=' Operator. hmm genauo dieses problem hatten wir doch gerade....

    Ilja