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
[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
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
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.
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.