方向上(我的)SQL左/右/内连接

时间:2013-10-10 10:10:34

标签: mysql sql join

获取餐馆列表时,我想加入此列表中的评分数据。

例如

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?

1 个答案:

答案 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没有指定将返回哪一行。