Wiklund!!Medlem sedan juli 2002556 inlägg
Jag har gjort ett script där folk kan betysätta bilder som har laddats upp.
Jag har en topplista som visar dom med bäst medelbetyg, det enda problemet jag har är att jag bara vill visa dom bilder som har fått fler än 5 röster.
Jag har testat så här men det fungerar ju inte så bra:
SQL = "select pictures.fromid, pictures.id, avg(vote) AS mBetyg, [b]count(*) AS aVotes[/b] FROM pictures, pictures_votes WHERE pictures.id = pictures_votes.picid and [b]pictures_votes.aVotes > 5[/b] GROUP BY pictures.id ORDER BY 3 DESC limit 0,10"
Det fungerar fint om jag tar bort "Count".
Engine^Medlem sedan dec. 20002 861 inlägg
Du måste (inte i MySQL förvisso, men bör ändå) ta med alla fält du väljer även i din GROUP BY. Annars gissar jag att felet beror på att du har ett fält i din pictures_votes som heter aVotes. Byt namn på aliaset så ska det nog fungera.
SQL = "SELECT pictures.fromid, pictures.id, avg(vote) AS mBetyg, count(*) AS [b]aVotesCount[/b] " & _
"FROM pictures, pictures_votes " & _
"WHERE pictures.id = pictures_votes.picid " & _
" AND pictures_votes.aVotes > 5 " & _
"GROUP BY pictures.fromid, pictures.id " & _
"ORDER BY 3 DESC LIMIT 0, 10"
Eller så kan du ju skriva frågan på ett annat sätt...
SQL = "SELECT p.fromid, p.id, AVG(vote) AS mBetyg, Count(*) AS aVotesCount " & _
"FROM pictures p " & _
"INNER JOIN pictures_votes pv " & _
" ON pv.picid = p.id " & _
"GROUP BY p.fromid, p.id " & _
" HAVING Count(*) > 5 " & _
"ORDER BY 3 DESC LIMIT 0, 10"
Wiklund!!Medlem sedan juli 2002556 inlägg
HAVING fungerade perfekt, visse inte att det fanns en sån SQL fråga. Men som sagt, man lär sig nått nytt varje dag.
Tack!