Ilja: MySQL - Ein Error mit GROUP BY ?!?

Beitrag lesen

yo,

mysql> select f.name, COUNT(b.name) from foo f left outer join bar b on f.id = b.f_id;
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Warum will der eine GROUP BY  Clause haben?

count() und andere gehören zu den sogenannten aggregat-funktionen und heisst soviel wie gesamtheit-funktion. sie beziehen sich also auf alle datensätze einer Tabelle, bzw. einer Gruppe.

GROUP BY gruppiert nun nach bestimmten spalten, die du nach der Klausel GROUP BY angibst. beispiel gruppieren nach namen, dann werden gruppen über den inhalt der spalte namen erzeugt. so stehen in der erste gruppe alle datensätze die den namen andreas haben, die zweite gruppe hat alle datensätze mit den namen Berta, usw.

jetzt wird es interessant für deine fehlermeldung. da count pro gruppe oder tabelle nur einen wert zurück gibt, du aber durchaus mehrere namen in deiner tabelle hast, weiss das dbms nicht, welchen namen er von den vielen nehmen soll. deshalb die fehlermeldung.

deshalb musst du jede spalte grupppieren, die zusammen mit einer aggregat-funktion angezeigt werden soll.

Ilja