将2个表中的数据合并到1个查询中

时间:2010-08-18 15:37:27

标签: sql

大家好

我在将2个表中的数据合并到1个查询时遇到了一些问题。

现在我有一个 table-nr1 包含餐馆的原始数据,而在另一个 table-nr2 我有许多已经评级的餐馆。

所以,现在我想选择所有餐馆,同时从 table-nr2 中选择该餐厅的等级,并获得这些等级的平均值。

如何在单个SQL查询中执行此操作?

3 个答案:

答案 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)