MySQL查询,从表中求和数据

时间:2014-10-03 07:23:59

标签: mysql sum

我有两个表客户端和现金。

表客户端:

ID Name ... other data
------------------------    
1  Bob
2  Marry
3  Tom

cash

ID Cash Id_client_fk
----------------------
1  500  1
2  500  3
3  500  3
4  500  1

我想从每个客户那里汇总现金,即使现金不存在。

外键是id_client_fk到表client -> ID

2 个答案:

答案 0 :(得分:1)

您可以使用SUM()和左连接来实现此目的:

SELECT u.ID, u.Name, SUM(c.Cash) cash FROM client u
LEFT JOIN cash c ON c.Id_client_fk = u.ID 
GROUP BY u.ID

要删除NULL值,您可以使用IF语句:

SELECT u.ID, u.Name, SUM(IF(c.Cash > 0, c.Cash, 0)) cash FROM client u
LEFT JOIN cash c ON c.Id_client_fk = u.ID 
GROUP BY u.ID

答案 1 :(得分:0)

不太清楚。请提供数据示例以及您想要的结果。例如,只需几行就可以理解这个想法。

如果我理解正确,你需要这样的东西:

 SELECT client.id,client.name,s.sum_c FROM client INNER JOIN (SELECT `id_client_fk`, sum(`cash_row`) sum_c FROM `cash` GROUP BY  `id_client_fk`) s ON client.id=s.id_client_fk ORDER BY 3 desc limit 20;