Unknown column 'total_value' in 'where clause' - lol?

Hi,

folgendes Problem:
Ich habe einen (zugegeben recht langen) SQL-Query, welcher mir die am besten bewerteten Profile aus der Tabelle pcprofil_profiles rausfischen soll…
Der Query ist folgender:

SELECT d.cpu, d.gpu, d.mb, p.id, p.uid, p.name, COUNT(r.id) as total_votes, SUM(r.value) as total_value FROM pcprofil_profiles p INNER JOIN pcprofil_ratings r ON r.id = CONCAT(p.id, 'viewprofile') INNER JOIN pcprofil_profiles_data d ON d.pid = p.id WHERE (total_value / total_votes > 4) AND (p.name != '') ORDER BY total_value / total_votes DESC LIMIT 0,10

Jetzt meckert MySQL aber:

Warum?

total_value und total_votes wird ja mit SUM() und COUNT() definiert

Danke im Voraus.

Hi,

weil die genannte Spalte in der angesprochenen Tabelle nicht existiert?

Kerbi, s. Edit :wink: :nutz:

dev.mysql.com/doc/refman/5.1/de/ … alias.html

[quote]Im Standard-SQL dürfen Sie in WHERE-Klauseln keine Spaltenaliase benutzen, da der Spaltenwert unter Umständen noch gar nicht festliegt, wenn der WHERE-Code ausgeführt wird. Die folgende Anfrage ist beispielsweise unzulässig:

Möglicherweise liegt genau hier das Problem.

Gegooglet mit den Schlüsselwörtern: mysql where alias

und was macht man da? :hail: !haue

Keine Ahnung. Sich 'ne andere Struktur ausdenken?

:nutz: :astonished: :astonished:

Wenn du den nerv dazu hast, kannst du uns erzählen was das ganze machen soll (ein Rating System so wie ich das bisher verstanden habe) und wie die aktuelle Struktur genau ausschaut.

Dann können wir uns das mal anschauen und Vorschläge zur Verbesserung geben.

Alles klar, danke für das Angebot :smiley: :wink:
Die Struktur sieht wie folgt aus:
Die Tabelle „pcprofil_ratings“ hat die Spalten „id“, „value“ und „uid“.
id kann dann etwas sein wie „viewprofile13“, wobei „viewprofile“ das Präfix und 13 die eigentliche Profilid ist. :ps:
value kann 1, 2, 3, 4 oder 5 sein, UID ist die UserID (ist ja klar).
Nun will ich mit dem Query die 5 am besten bewerteten Profile haben.

Fertig. :smiley:


so funktioniert das

so funktioniert das