我有两个表客户端和现金。
表客户端:
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
答案 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;