-1

私はimdbのようなサイトを持っており、私たちは映画情報を提供しています。そして私たちのウェブサイトには、すべてのユーザーのすべての映画を評価するオプションがあります。

私は2つのテーブルを持っています
1。imdb(ストアムービーの詳細用)id、name、actors、vote
2.レーティング(ストアユーザーのレーティング詳細用)id、rating_id(最初のテーブルのidと同じ)、rating_num、IP

今何をしているのか..誰かが映画を評価するとき、評価テーブル(合計評価/評価の数)を使用してその映画の評価の平均を取り、その値を最初のテーブルの「投票」列に挿入します..私の要求..それがなぜこのように行われたのか..

今私の問題は..私は最高評価の映画を取得したいです..私は投票列でどの映画がリストしたい最高評価を持っているかを意味し、もう1つの条件はその映画が10人のユーザーによって評価されるべきであるということです(そのための評価表を使用してください)

前もって感謝します

4

1 に答える 1

1

テーブルがどのように編成されているかよくわかりません。A) 評価テーブルで顧客が指定した評価ごとに新しい行がありますか、それとも B) 更新される映画ごとに 1 つの行しかありませんか?

私はそれがAであり、rating_numが貸衣装によって与えられた評価であると推測しています.

この場合、単純な MySql ソリューションで COUNT や AVG などの集計関数を利用できます。テストされていない例。

編集 - imdb テーブルから詳細を取得するには、それらを結合するだけです。

SELECT id as 'ID', COUNT(1) as 'Number of ratings', AVG(r.rating_num) as 'Average rating', i.name, i.actors, i.vote
FROM ratings r
INNER JOIN imbd i ON ( r.id = i.id )
GROUP BY r.id
HAVING `Number of ratings` >= 10
ORDER BY `Average rating` desc
LIMIT 10
于 2012-11-23T18:47:45.090 に答える