2010-01-23 6 views
1

J'ai une fonction sur mon site où les gens peuvent voter sur les photos. Chaque fois que quelqu'un clique sur le bouton de vote, mon script ajoute une ligne dans une table (mysql).Compter les 10 premières entrées d'un tableau

Chaque ligne ressemble à ceci: (Nom de la table = aime)

id --------- userId --------- photoName --------- Date

1 ----------- ----------- 21 -------------- 34234 20100101

Comment est-ce que je trouve les 10 meilleures photos sur lesquelles les gens ont voté? J'ai essayé "SELECT TOP 10 photoName DE aime", mais que le travail na pas ...

+0

@Haljan: Vous pouvez voter pour les réponses que vous préférez. Une fois votre problème résolu, acceptez le meilleur. –

+0

@Peter - il ne posait pas une méta-question :) –

+0

@Yuval A: Bien sûr :) Rien de mal à up-vote/acceptation cependant? –

Répondre

3
SELECT 
    COUNT(*) as points, 
    photoName 
FROM likes 
GROUP BY photoName 
ORDER BY points DESC 
LIMIT 10; 
+0

Super. Merci à vous deux – Haljan

1

Vous devez utiliser une count avec un group by; quelque chose comme cela devrait aider:

select photoName, count(*) as nbLikes 
from likes 
group by photoName 
order by count(*) desc 
limit 0, 10 

vous dire group by photoName, et vous comptez combien de fois chaque photo a été aimé - et order by ce nombre dans desc ordre, pour obtenir le plus aimé; et, finalement, vous utilisez limit pour aller chercher seulement les 10 premières lignes.

Questions connexes