-1

我有像 imdb 这样的网站,我们提供电影信息罪恶网站..我们的网站可以选择为每个用户评价所有电影。

我有两张桌子
1 。imdb(用于存储电影详细信息) id,name,actors,vote
2. rating(用于存储用户评分详细信息) id,rating_id(与第一个表中的 id 相同),rating_num,IP

现在正在做的是..当任何人对电影进行评分时,通过使用评分表(总评分/评分数)获取该电影评分的平均值并将该值插入第一个表的“投票”列中......我要求这个......这就是为什么这样做..

现在我的问题是..我想获取评分最高的电影..我的意思是在投票栏中哪部电影有最高评分想要列出,还有一个条件是该电影应该由 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 回答