2

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

例如

表 1 – 餐厅
列:id、名称、纬度、经度

表 2 – 评级
列:id、restaurant_id、等级(值选项:1、2、3、4、5)

构建了这个:

SELECT *, SUM(ratings.rating) AS total_rating_count 
FROM restaurants 
INNER JOIN ratings 
    ON ratings.restaurant_id = restaurants.id

这只会返回我 1 家餐厅。我还需要能够计算平均评分的每家餐厅的评分数量。

可以在这方面使用一些方向。

编辑:当我们在做的时候,我想加入另一张桌子,上面有与餐厅相关的评论。我应该同时深入研究: 左、右、外连接和内连接有什么区别?

4

1 回答 1

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 而言,它没有指定将返回哪一行。

于 2013-10-10T10:15:24.483 回答