Mailinglisten-Archive |
Konstantin Rekk schrieb: > (sybase) > > select distinct > count(*), > upper(substring(PR.PersonalName_L,1,1)) as page_letter > from > [...] > Das Ergebnis liefert die richtige Anzahl (2) , aber alle > möglichen Anfangsbuchstaben ohne Einschränkung! > Lasse ich count(*) weg dann bekomme ich auch die richtigen > Anfangsbuchstaben ( 2 an der Zahl). > > Sehe ehrlich gesagt nicht warum, [...] Das Grundproblem ist, dass diese Query keine Gruppierung (GROUP BY) nutzt, aber dennoch eine Aggregatsfunktion (nämlich COUNT) zusammen mit normalen Attributen (hier PersonalName) verwendet. Das ist in Standard-SQL aus gutem Grund verboten! MySQL liefert Dir bei einer solchen illegalen Abfrage auch prompt: | ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) | with no GROUP columns is illegal if there is no GROUP BY clause Ich kenne jetzt Sybase nicht, aber offensichtlich ist es in diesem Fall laxer und handhabt das auf seine eigene Weise ... Konkret für Dein Problem aber ein anderer Lösungsansatz: Lass doch das COUNT(*) einfach weg! Es gibt doch ganz sicher irgendeine Funktion, die Dir die Anzahl der Ergebniszeilen einer Abfrage liefert, oder? Mit MySQL und PHP wäre das die Funktion mysql_num_rows. Ciao, Martin
php::bar PHP Wiki - Listenarchive