在获取餐厅列表时,我想在此列表中加入评级数据。
例如
Table1 – restaurant Columns: id, name, latitude, longitude
and
Table2 – ratings Columns: id, restaurant_id, rating (value options: 1, 2, 3, 4, 5)
Constructed this:
SELECT *, SUM(ratings.rating) AS total_rating_count
FROM restaurants
INNER JOIN ratings
ON ratings.restaurant_id = restaurants.id
这只会返回 1 家餐厅。我还需要每家餐厅的可用评分量才能计算平均评分。
可以在这方面使用一些指导。
编辑: 就在我们讨论的时候,我想加入另一张 table ,上面有与餐厅相关的评论。 我应该同时深入研究这个: What is the difference between Left, Right, Outer and Inner Joins?
最佳答案
你需要 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 方面没有指定将返回哪一行。
关于mysql - (My)SQL 左/右/内连接方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292964/