【问题标题】:MySQL query for summing values in another tableMySQL查询求和另一个表中的值
【发布时间】:2011-05-19 06:56:12
【问题描述】:

我有几个具有父子关系的表。例如,我想将 sum 函数应用于子表的一列,并将其与父表的所有数据一起返回。

Parent_table
ID, Date, Title

Child_table
ID, another_id, column_to_sum
//(ID is foreign key pointing to Parent_table)

Sample Data in Parent_table
1, 22-11-2010 00:00:00 , 'Some Title'
2, 13-11-2010 00:00:00 , 'Some Title 2'

Sample Data in Child_table
1, 1, 10
1, 2, 11
1, 8, 3
2, 5, 11
2, 8, 6

查询的输出应返回parent_table 中的所有列以及一个附加列,即,将Child_table 中的column_to_sum 的值与ID 匹配的parent_table 中的每个项目相加。

怎么做?

【问题讨论】:

    标签: mysql join inner-join


    【解决方案1】:
        SELECT p.ID,
          p.Date,
          p.Title,
          SUM(c.column_to_sum) Total
        FROM Parent_Table p LEFT JOIN
           Child_Table c ON p.ID = c.ID
        GROUP BY p.ID
    

    【讨论】:

    • 首先,尝试正确格式化代码。使用 ht ecode burron 010101。另外,你的 GROUP BY 呢?
    【解决方案2】:

    这不是我的想法,但是怎么样

    SELET p.ID,
      p.Date,
      p.Title,
      SUM(c.column_to_sum) Total
    FROM Parent_Table p INNER JOIN
       Child_Table c ON p.ID = c.ID
    GROUP BY p.ID,
          p.Date,
          p.Title
    

    【讨论】:

    • 您应该只按一列分组,然后如果您希望它以不同的方式排序,请使用 order by GROUP BY p.ID ORDER BY p.Date, p.Title
    【解决方案3】:

    这并不能完全回答问题,但可能会对某人有所帮助,因为这是我的解决方案。 (我知道它缺少 JOIN)并且不知道这个解决方案在大型数据库上的效率。

    SELECT 
        Parent_table.*,
            (SELECT 
                SUM(Child_table.column_to_sum) 
            FROM Child_table 
            WHERE Child_table.id = Parent_table.id)
    FROM Parent_table
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2020-11-15
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多