2016-09-15 14 views
0

私がプログラムしようとしているムービーの評価システムに関して、うまくいけば私の最後の投稿。トップ5のゴーリング映画を手伝ってくれたユーザーのAsaphに感謝します。これは私のデータベースレイアウトされています。今、私は思っていた私は、これはより公平にすることができます方法はあり私の現在の映画データベースの公正な評価

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

と私はトップゴーリーフィルム(タイプ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 

を一覧表示することができます。このSQLを使用して私の映画の結果は?

たとえばmovie123は平均投票数7で5票を持ち、映画456は1票しかないかもしれませんが、7を超える場合はリストの一番上に表示されます。これをもっと公平にするにはどうすればいいですか?おそらく何とかグループの行の最小数をやっている?または他の方法ですか?

また、何か助けが素晴らしいです!

+0

私はその何かを考えて[OK]を$ sql = 'SELECT' tmdb'、AVG(レート)AS avg_rating、COUNT(レート)AS min_count FROM 'tbl_rating' WHERE' 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'; 

これは良い方法は、私に知らせて自由に感じるがある場合はトリックを行うようだ:)

関連する問題