„Invalid use of group function“-Fehler

superharry

Mitglied
Code:
SELECT SUM(pagut_day_visitors) AS Besucher ,   
             SUM(pagut_day_price_in-pagut_day_price_out) AS Gutschrift , papro_name 
FROM papro as pro, pagut_day as paday,pabank 
WHERE pro.papro_status='0' AND pro.papro_nr=paday.pagut_day_papro_nr AND pagut_day_pagut_nr='0' AND                
             papro_pabank_nr<>'0' AND pabank_status='0' AND pabank_state='' OR pabank_state='Deutschaland' 
             AND SUM(pagut_day_price_in-pagut_day_price_out)>9.99 
         OR papro_pabank_nr<>'0' AND pabank_status='0' AND pabank_state<>'' AND 
             pabank_state!='Deutschland' AND SUM(pagut_day_price_in-pagut_day_price_out)>19.99 
             AND pabank.pabank_nr=pro.papro_pabank_nr 
ORDER BY Gutschrift DESC
Fehler:
Invalid use of group function
hab das GROUP BY schon rausgenommen!
das leigt scheinbar aber an dem

SUM(pagut_day_price_in-pagut_day_price_out)>9.99
oder
SUM(pagut_day_price_in-pagut_day_price_out)>19.99
kann mir da jemand sagen was ich falsch gruppieren will? hab schon alles versucht! :confused:
 
Zuletzt bearbeitet:
Gewisse Funktionen – darunter die SUM()-Funktion – können nur in Verbindung mit der GROUP BY-Klausel eingesetzt werden.
Deshalb probier mal Folgendes:
Code:
SELECT
        SUM(`pagut_day_visitors`) AS `Besucher`,
        SUM(`pagut_day_price_in`-`pagut_day_price_out`) AS `Gutschrift`,
        `papro_name`

  FROM
        `papro` AS `pro`,
        `pagut_day` AS `paday`,
        `pabank`

  WHERE
        `pro`.`papro_status`  = '0'
    AND `pro`.`papro_nr`      = `paday`.`pagut_day_papro_nr`
    AND `pagut_day_pagut_nr`  = '0'
    AND `papro_pabank_nr`    != '0'
    AND `pabank_status`       = '0'
    AND `pabank_state`        = ''
     OR `pabank_state`        = 'Deutschaland'
    AND SUM(`pagut_day_price_in`-`pagut_day_price_out`) > 9.99
     OR `papro_pabank_nr`    != '0'
    AND `pabank_status`       = '0'
    AND `pabank_state`       != ''
    AND `pabank_state`       != 'Deutschland'
    AND SUM(`pagut_day_price_in`-`pagut_day_price_out`) > 19.99
    AND `pabank`.`pabank_nr`  = `pro`.`papro_pabank_nr`

  GROUP BY
        `papro_name`

  ORDER BY
        `Gutschrift` DESC
 
das is ja das komische hab das auch schon mit
GROUP BY papro_nr
versucht!
wobei das die ID nummer zum namen ist!
aber da kommt bei papro_name und papro_nr auch wieder der fehler mit Falsche Gruppierung!
leigt das vlt. daran das price_in und price_out vom Datentyp decimal(8,2) sind! wegem dem größer und kleiner hab damit noch nich rumhandiert!
 
Zuletzt bearbeitet:
Hi,

Alle ausgegebenen Felder, die nicht in einer Aggregatfunktion stehen, müssen in die WHERE-Clause. Also musst du nach papro_name gruppieren, nicht nach der ID.

Ggf. kannst du ja zum Test auch deine WHERE-Clause einschränken, wenn du denkst, dass es daran liegen könnte. Einfach immer mehr Einschränkungen weglassen, bis keine mehr da sind.
Aber eigentlich sieht der Query, wie ihn Gumbo gepostet hat i. O. aus.


PS: Halt dich doch bitte an die Netiquette.
 
Ja danke fürs verschieben, hab noch garnich gesehen das es ein unterforum für Datenbanken gibt :)
Auch wenn ich nach papro_name Gruppiere sagt er mir "invalid use of Group function"
wen ich die SUM(pagut_day_price_in-pagut_day_price_out)>9.99 bzw. >19.99 raus nehm kommen zwar Datensätze die ich nich haben will aber auch welche die kommen sollten!
Also wirds wohl an dem SUM(..) liegen!
bloß was is daran falsch?
Ich will ja bloß von mehreren papro_name's die summe bilden für price_in und price_out und die dann Deffidieren!
 
Zuletzt bearbeitet:
Zurück