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
1
2
3
4
5
6
7
2
3
4
5
6
7
"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).
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85898
Url: https://administrator.de/forum/mysql-fehler-invalid-use-of-group-function-85898.html
Ausgedruckt am: 11.04.2025 um 14:04 Uhr
2 Kommentare
Neuester Kommentar
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:
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
"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