2010-06-23 10 views
1

J'essaie de noter les types de fruits de la meilleure note possible donnée par les utilisateurs.Système d'évaluation de MySQL - Trouver la cote

J'ai une table de fruits appelé Notes juste pour soumettre note les informations suivantes

Fruit_id int 
From_ID int 
Rating int 

maintenant je suis en train d'exécuter une commande SQL comme le

suivant
select From_ID, AVG(Rating) AS Rating FROM Ratings Group BY `Fruit_ID` ORDER by Rating DESC 

Cela fonctionne cependant, si je reçois 1 utilisateur qui évalue un fruit une pomme un 5, puis 1000 utilisateurs qui évaluent une orange un 4 la pomme est soudainement considérée comme meilleure.

Comment puis-je prendre en compte le nombre de votes, pour m'assurer que le plus voté avec le meilleur est le premier.

Répondre

0

Pourquoi ne pas simplement sélectionner le nombre de votes et l'afficher à l'utilisateur. Alors oui, 1 vote de 5 pour une pomme serait un total de 5 MAIS avec seulement 1 vote. Cela donnerait aux utilisateurs un moyen simple de voir à quel point une classification donnée est "populaire".

C'est ainsi que la plupart des systèmes de notation fivestar fonctionnent sur le net aujourd'hui si je ne me trompe pas.

Bonne chance!

Nick

+0

Le problème ici n'est pas l'affichage des données, il essaie de classer les meilleurs fruits sur un avec un seul vote – pws5068

2

Cette question est plus à propos de peaufiner votre formule mathématique qu'autre chose.

Il semble que ce que vous demandez est la popularité, plutôt que la note. Un moyen simple de le faire pourrait être de multiplier la note moyenne par le nombre de votes. Qu'en est-ce (s'il vous plaît excusez-moi si ma syntaxe est éteinte, je suis loin d'un serveur SQL pour le moment):

select From_ID, AVG(Rating) * COUNT(Rating) AS Rating FROM Ratings Group BY Fruit_ID ORDER by Rating DESC

Gardez à l'esprit que cette formule évalueriez 1000 votes de 1 bien plus que 1 vote de 5.

+0

Vous pouvez simplement utiliser ... SELECT From_ID, SUM (Note) AS notation A GROUP BY Fruit IDCommande par ... Note DESC comme moyen * COUNT = SOMME. –