大家好
我在将2个表中的数据合并到1个查询时遇到了一些问题。
现在我有一个 table-nr1 包含餐馆的原始数据,而在另一个 table-nr2 我有许多已经评级的餐馆。
所以,现在我想选择所有餐馆,同时从 table-nr2 中选择该餐厅的等级,并获得这些等级的平均值。
如何在单个SQL查询中执行此操作?
答案 0 :(得分:1)
SELECT r.*,
COALESCE(
(
SELECT AVG(grade)
FROM table_nr2 g
WHERE g.restaurant_id = r.id
), 0)
FROM table-nr1 r
答案 1 :(得分:1)
假设您的餐馆有姓名和身份证明,并且您的评论有等级
SELECT re.name, avg(ra.grade)
FROM table-nr1 re
LEFT JOIN table-nr2 ra ON re.id = ra.id
GROUP BY re.name
您需要按照您想要选择的所有未聚合的字段进行分组,而左连接意味着您将获得所有餐厅,无论他们是否有任何评级。
答案 2 :(得分:0)
您需要执行加入。在这种情况下,内部左连接听起来很好,这是默认连接。如果链接它们的字段在两边都相同,则可以使用USING语法,因此最终会得到如下内容:
SELECT table-nr1.*, AVG(table-nr2.score)
FROM table-nr1
JOIN table-nr2 USING (restrauntId)
否则你可以使用像这样的on子句做一些链接它们的东西:
SELECT table-nr1.*, AVG(table-nr2.score)
FROM table-nr1
JOIN table-nr2 ON (table-nr1.restrauntId = table-nr2.restrauntId)