2016-09-15 106 views
0

好希望我的最后一篇文章关于我正在试图编程的电影评级系统。感谢用户Asaph帮助我制作了5部顶级电影。这是我的数据库布局:对我当前的电影数据库的公正评分

ID | UserID | Rating | TMDB | TYPE 
    ----------------------------------- 
    1  34  6  432  2 
    ----------------------------------- 
    2  34  9  432  3 
    ----------------------------------- 
    3  44  9  468  2 

,并使用这个SQL,我可以列出前戈里电影(类型2)

sql SELECT `tmdb`, AVG(rating) AS avg_rating 
FROM `tbl_rating` 
WHERE `type`= :type 
GROUP BY `tmdb` 
ORDER BY avg_rating DESC 
LIMIT 5 

现在我想知道有没有办法我可以使它更公平我的电影结果?

例如movie123可能有5票与平均投票7和movie456可能只有1票,但如果它的7以上它将在列表的顶部。我怎样才能让这更公平?可能以某种方式在组中做最少数量的行?或者其他方式?

再次,任何帮助是惊人的!

+0

,我认为它的东西像 $ sql ='SELECT'tmdb',AVG(rate)AS avg_rating,COUNT(rate)AS min_count FROM'tbl_rating' WHERE'type' =:type AND min_count> 4 GROUP BY'tmdb' ORDER BY avg_rating DESC LIMIT 5 “;但由于某种原因,这不起作用? –

回答

0

好,我觉得这就是我想做的事:)

$sql = 'SELECT `tmdb`, AVG(rate) AS avg_rating, COUNT(rate) AS min_count FROM `tbl_rating` WHERE `type`= :type GROUP BY `tmdb` HAVING min_count > 1 ORDER BY avg_rating DESC LIMIT 5'; 

这似乎这样的伎俩,如果有一个更好的办法随时让我知道:)