HAVING oder WHERE
-
hallo hallo
ich raff nicht ganz, wie es heissen müsste, dass man das berechnete feld als Filter nehmen kann.
SELECT id, iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0) AS gesamtpflege FROM tabelle ....
WHERE gesamtpflege > 0
oder
HAVING gesamtpflege > 0
1. führt zu
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
bzw 2. zu:
HAVING-Klausel (gesamtpflege>0) ohne Gruppierung oder Aggregatfunktion
DBMS ist in diesem testfall Access
Über Hinweise würd ich mich freuen.. Danke
-
Bin nicht so der Access-Spezi, aber zumindest im SQL-Server 2000 ging sowas auch nicht. Und da beides von Microsoft ist ...
So sollte es:
SELECT id, iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0) AS gesamtpflege FROM tabelle WHERE iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0) > 0
In MySQL geht das
-
HAVING ohne GROUP BY ist Quatsch.
Berechnete Felder berechnet man in der WHERE neu, also ganz so wie illuminator schreibt, bloss mit WHERE statt HAVING.
Und ich würde nochmal klammern, alsoSELECT id, iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0) AS gesamtpflege FROM tabelle WHERE (iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0)) > 0
Man kann aber auch einfach ein sub-select nehmen:
SELECT id, gesamtpflege FROM ( SELECT id, iif(option1=1 , pflege1, 0) + iif(option2=1 , pflege2, 0) AS gesamtpflege FROM tabelle ) AS my_aliasname WHERE gesamtpflege > 0
-
hustbaer schrieb:
HAVING ohne GROUP BY ist Quatsch.
ups, hab ich doch tatsächlich das GROUP BY vergessen bzw. WHERE
my bad