在PHP和MySQL中显示最多评分

时间:2012-01-03 22:15:03

标签: php mysql

好的,所以我有两张桌子。一个拿着食谱,第二个拿着所有评级。

recipes_ratings:
id, rating, user_id, recipe_id

recipes:
id, name

我想计算每个食谱的所有行。然后排序并显示评分最高和最低的食谱。

最简单的方法是什么?我曾考虑过提问

SELECT * FROM recipes_ratings

然后通过评级循环计数,并存储到数组中,然后从中进行排序。

但它能做得更简单吗?一个查询只做全部..或?

1 个答案:

答案 0 :(得分:1)

根据您希望如何计算每个食谱的总评分,您可能需要调整计算。但查询应该是这样的:

SELECT r.id, product, avg(rating) as average_rating
FROM recipes r 
LEFT JOIN recipes_ratings rr 
    ON (r.id=rr.recipe_id)
GROUP BY id 
ORDER BY 3 desc;

请注意,这也将输出没有任何评级的食谱。如果您不想让它们返回,请将LEFT JOIN更改为JOIN