-1

我有下表(简化):

 CUSTOMERS
 -int id
 -varchar name

 ENVENTS
 -int id
 -int customer_id
 -int duration

我的问题是,我想获得具有相同 customer_id 的持续时间总和,然后用表客户的名称替换 customer_id。

所以输出应该是:

+--------------+----------------+
| 姓名 | 总和(工期) |
+--------------+----------------+
| 客户名 | 12313 |
+--------------+----------------+
  • 这只是一个例子。

任何人都可以给我一个提示吗?

4

2 回答 2

4

尝试加入两个表并使用GROUP BY子句来实现这一点:

SELECT c.name
      ,SUM(e.duration) AS duration
  FROM Customers c 
  JOIN EVENTS e 
    ON c.id = e.customer_id
 GROUP BY c.id

请参阅此示例 SQLFiddle


编辑:

LEFT JOIN如果客户不在事件表中,请尝试获取持续时间为 0 的客户名称

SELECT c.name
      ,IFNULL(SUM(e.duration),0) AS duration
  FROM Customers c 
  LEFT JOIN EVENTS e 
    ON c.id = e.customer_id
 GROUP BY c.id

看到这个 SQLFiddle

查看MySQL 中的 JOINSQL 连接的可视化解释

于 2013-07-19T12:29:37.413 回答
1

请尝试以下代码。

select c.name,SUM(e.duaration) as duration 
from customer as c 
left join events as e 
    on c.id = e.id 
group by e.customer_id
于 2013-07-19T12:31:22.963 回答