Hi!
das ist eine fehlerhafte abfrage, die nur mysql verarbeiten würde. jedes andere dbms würde eine fehlermeldung ausgeben.
Was genau ist denn falsch und wie macht man's richtig?
Offensichtlich weißt du das nicht, aber dieses Verhalten MySQLs und die potentiellen Probleme, die daraus resultieren, wurden schon so oft beschrieben, dass man nicht immer Lust hat, das schon wieder zu beschreiben. "MySQL GROUP BY" dürfte vermutlich eine Menge Fundstellen zu Tage fördern. Konkret geht es darum, wenn eine Gruppierung vorgenommen wurde, dann ergibt das eine Zusammenfassung - aus meheren Datensätzen entsteht einer in der Ergebnismenge. Eine Aggregatefunktion ist kein Problem, denn die errechnet beispielsweise einen Durchschnittswert, eine Summe oder einen Extremwert über alle Datensätze der Gruppierung, ergibt somit ein eindeutiges Ergebnis. Selektierst du nach Feldern, die nicht in der Gruppierung vorkommen, - die Daten welchen Datensatzes sollen dann in der Ergebnismenge landen? Alle DBMS außer MySQL weisen eine Selektion von nicht gruppierten Feldern zurück, weil diese Frage nicht eindeutig geklärt werden kann. MySQL streubt sich nicht, nimmt jedoch irgendeinen Datensatz aus der Gruppierung. Das funktioniert nur dann zuverlässig, wenn du Redundanzen in der Tabelle hast (was oftmals auf Normalisierungspotential hat). Ein Liste der Bestellungen, gruppiert über die Kundennummer, soll den Kundennamen und die Summe ausweisen. Normalisiert hat der Name nichts in dieser Tabelle verloren. Aber da der Name pro Kundennummer sehr wahrscheinlich immer gleich ist, ist es egal, welcher Datensatz davon genommen wird.
Lo!