获取餐馆列表时,我想加入此列表中的评分数据。
例如
Table1 – restaurant Columns: id, name, latitude, longitude
和
Table2 – ratings Columns: id, restaurant_id, rating (value options: 1, 2, 3, 4, 5)
构建于此:
SELECT *, SUM(ratings.rating) AS total_rating_count
FROM restaurants
INNER JOIN ratings
ON ratings.restaurant_id = restaurants.id
这只给我一家餐馆。我还需要每家餐厅可用的评分数量来计算平均评分。
可以在此使用某个方向。
修改: 虽然我们在这里,但我想加入另一张表,其中包含与餐厅相关的评论。 我应该同时深入研究这个问题: What is the difference between Left, Right, Outer and Inner Joins?
答案 0 :(得分:0)
您需要GROUP BY
子句:
SELECT
*, AVG(ratings.rating) AS avg_rating_count
FROM
restaurants
INNER JOIN ratings ON ratings.restaurant_id = restaurants.id
GROUP BY
restaurants.id
- 既然你提到了平均值,我在查询中放置了AVG()函数。但要注意,这在普通SQL中是无效的(将非组列与组函数混合) - 并且就MySQL而言,DBMS没有指定将返回哪一行。