Durch AS definierten Wert in Where-Bedingung implementieren

Mariusspr

Neuer Benutzer
Beiträge
2
Hallo, ich möchte eine Abfrage mit folgender Aufgabenstellung durchführen:

"Geben Sie eine absteigend sortierte Liste von Kunden und deren Gesamtbestellwert aus, die bereits insgesamt Ware im Wert von über 10.000 EUR bestellt haben!“

Mein Code wäre bisher
Code:
Select k.firma, Sum(bd.Einzelpreis*bd.anzahl) As Gesamtbestellwert
From Kunden k,bestelldetails bd,bestellungen b
Where  Gesamtbestellwert > 10000 AND k.kundencode=b.kundencode and bd.BestellNr=b.BestellNr
Group by k.kundencode

Leider scheitert es an der Where Bedingung Gesamtbestellwert > 10000, da Unknown column Gesamtbestellwert. Wie kann ich diesen Gesamtbestellwert in meine Where-Bedingung mit einbauen?

Vielen Dank im Voraus,

Marius
 
Werbung:
das geht nicht.

Code:
test=*# select 1 as r;
 r
---
 1
(1 row)

test=*# select 1 as r where r = 1;
ERROR:  column "r" does not exist
LINE 1: select 1 as r where r = 1;
  ^
test=*# select * from (select 1 as r) foo where r=1;
 r
---
 1
(1 row)


Das Where filtert vor Ausführung dessen, was im Select steht. Zu diesem Zeitpunkt ist das nicht definiert. Punkt.
 
Having kann man bei Aggregationen verwenden, dein select ist aber auch so für den Eimer, weil Du Spalten im Resultat hast, die weder aggregiert noch gruppiert werden. MySQL ist in den derzeitigen Beta-Versionen noch nicht in der Lage, das zu erkennen, daß wird erst, sobald es nächstes Jahr oder so endlich mal eine richtige stable Release von MySQL gibt ;-) , bis dahin liefert die MySQL ein zufälliges Ergebnis. Nicht schön, aber immerhin etwas ;-)
 
Aber HAVING sum(bd.einzelpreis*bd.anzahl) > 10000 müsste doch gehen, abgesehen von der fehlerhaften GROUP BY Klausel.
 
Bei Having kann er den Alias nutzen, da ist das ja berechnet. Having filtert die Ergebnisszeilen, Where die Ausgangsmenge.
 
Werbung:
bischen quer gedacht ... probier es mal damit
ich bin mir aber nicht sicher in wie performat das ist. Das sind ja quasi 2 selects in einem.
Code:
select * from (

Select k.firma, Sum(bd.Einzelpreis*bd.anzahl) As Gesamtbestellwert
From Kunden k,bestelldetails bd,bestellungen b
Where k.kundencode=b.kundencode and bd.BestellNr=b.BestellNr
Group by k.kundencode

) as a where a.Gesamtbestellwert > 10000
 
Zurück
Oben