MYSQL Fehler (Invalid use of group function)
Hi
ich habe gerade folgendes Problem mit einer SQL Abfrage. Ich bekomme als Fehler: Invalid use of group function
Die Abfrage soll mir sozusagen die Serverliste ausgeben nach dem Traffic der jeweiligen Server sortiert. Das Problem liegt anscheinen bei dem GROUP und ORDER Befehl. Es soll nach dem Traffic sortiert werden aber nur die zusammen addieren wo der Server auch gleich ist (images.server).
ich habe gerade folgendes Problem mit einer SQL Abfrage. Ich bekomme als Fehler: Invalid use of group function
"SELECT * FROM server, images WHERE
server.space_free - SUM(images.fsize_image+images.fsize_thumb) > '%s'
AND
server.max_fsize > '%s'
GROUP BY images.server
ORDER BY SUM(images.traffic)
ASC LIMIT %d, %d;"
Die Abfrage soll mir sozusagen die Serverliste ausgeben nach dem Traffic der jeweiligen Server sortiert. Das Problem liegt anscheinen bei dem GROUP und ORDER Befehl. Es soll nach dem Traffic sortiert werden aber nur die zusammen addieren wo der Server auch gleich ist (images.server).
Please also mark the comments that contributed to the solution of the article
Content-Key: 85898
Url: https://administrator.de/contentid/85898
Printed on: April 23, 2024 at 13:04 o'clock
2 Comments
Latest comment
Moin EvilMoe,
es liegt in der Natur der GROUP BY-Abfrage, dass es so nicht geht.
Platt gesagt müssen
Ein "SELECT * .....FROM What, Ever ...Group BY " geht also nicht... schon weil kein "SELECT *" erlaubt ist.
Besser so:
Grüße
Biber
es liegt in der Natur der GROUP BY-Abfrage, dass es so nicht geht.
Platt gesagt müssen
- zwingend in der unteren GROUP-BY-Clause alle Feldnamen erwähnt sein, die oben nach der SELECT-Anweisung als Spaltennamen OHNE weitere Aggregatsfunktion auftauchen.
- umgekehrt alle Felder des Resultsets, die nicht in GROUP-BY-Clause erwähnt sind, mit einer Aggregatsfunktion (SUM, AVG, FIRST, MAX,...) ummantelt sein
Ein "SELECT * .....FROM What, Ever ...Group BY " geht also nicht... schon weil kein "SELECT *" erlaubt ist.
Besser so:
"SELECT images.server, SUM(images.traffic)
FROM server, images
WHERE
server.space_free - SUM(images.fsize_image+images.fsize_thumb) > '%s'
AND
server.max_fsize > '%s'
GROUP BY images.server
ORDER BY SUM(images.traffic) ASC
LIMIT %d, %d;"
Biber