好的,所以我有两张桌子。一个拿着食谱,第二个拿着所有评级。
recipes_ratings:
id, rating, user_id, recipe_id
recipes:
id, name
我想计算每个食谱的所有行。然后排序并显示评分最高和最低的食谱。
最简单的方法是什么?我曾考虑过提问
SELECT * FROM recipes_ratings
然后通过评级循环计数,并存储到数组中,然后从中进行排序。
但它能做得更简单吗?一个查询只做全部..或?
答案 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
。