Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MYSQL Fehler (Invalid use of group function)

Frage Entwicklung Datenbanken

Mitglied: EvilMoe

EvilMoe (Level 2) - Jetzt verbinden

18.04.2008, aktualisiert 19.04.2008, 9559 Aufrufe, 2 Kommentare

Hi

ich habe gerade folgendes Problem mit einer SQL Abfrage. Ich bekomme als Fehler: Invalid use of group function
01.
"SELECT * FROM server, images WHERE  
02.
server.space_free - SUM(images.fsize_image+images.fsize_thumb) > '%s'  
03.
AND  
04.
server.max_fsize > '%s'  
05.
GROUP BY images.server 
06.
ORDER BY SUM(images.traffic)  
07.
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).
Mitglied: Biber
19.04.2008 um 23:27 Uhr
Moin EvilMoe,

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:
01.
"SELECT images.server, SUM(images.traffic)  
02.
FROM server, images 
03.
 WHERE  
04.
server.space_free - SUM(images.fsize_image+images.fsize_thumb) > '%s'  
05.
AND  
06.
server.max_fsize > '%s'  
07.
GROUP BY images.server 
08.
ORDER BY SUM(images.traffic) ASC  
09.
LIMIT %d, %d;"
Grüße
Biber
Bitte warten ..
Mitglied: EvilMoe
19.04.2008 um 23:34 Uhr
Mittlerweile kam ich auch auf eine Lösung, wurde noch etwas umfangreicher aber funktioniert wunderbar und ich werde mir deine Ratschläge mal zur Brust nehmen.

Neue SQL:
01.
 
02.
SELECT server.id as id, server.space as space, ftp_host, ftp_name, ftp_pass, path,  SUM(images.traffic) as traffic 
03.
FROM images, server  
04.
WHERE server.id = images.server AND server.max_fsize > '%d'  
05.
GROUP BY server.id  
06.
HAVING space - SUM(images.fsize_image+images.fsize_thumb) > '%d' 
07.
ORDER BY traffic LIMIT %d, %d 
08.
 
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MYSQL View group by (2)

Frage von schneerunzel zum Thema Datenbanken ...

Datenbanken
gelöst MySQL Function Anzahl Datensätze ermitteln (4)

Frage von MultiStorm zum Thema Datenbanken ...

Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
CMS
Lokales Wordpress im LAN - wie aufsetzen? (16)

Frage von Static zum Thema CMS ...

LAN, WAN, Wireless
gelöst Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (16)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
IP im privaten Netz nicht erreichbar (14)

Frage von guntis zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

Frage von IceAge zum Thema LAN, WAN, Wireless ...