sum函数错误的值和本月未付款的列表

时间:2016-01-14 11:32:04

标签: mysql sql

我有我的第一张表,其中包含有关客户的购买信息。因此,如果客户购买两个对象(电视和电话),则会添加以下两行:

第1行:

  

ID = 12321,client_name ='X',total_debts = 560,sale_type ='TV LG 40''',date = ...,time = ...

第2行:

  

ID = 34564,client_name ='X',total_debts = 700,sale_type ='iPhone',日期= ...,时间= ...

这些名称在 client_debts

中输入

现在我有了第二张表,它控制着每位顾客的付款。因此,当X先生来自他的总计1260美元,本月只需200美元时,它将被添加到 client_details ,如下所示:

  

id = 8642234,client_id = 34564,client_name ='X',payment = 200,date_now = ...,time_now = ...

我不关心他支付分期付款的项目,所以我添加到client_id,即最后一个购买ID。

我想要做的是比较每个客户的总债务和他的总付款。所以我单独尝试了每个查询:

SELECT client_name, sum(total_debts) FROM alamir_store.client_debts GROUP BY client_name;

我得到了这个结果:

enter image description here

第二个问题是:

SELECT client_name, sum(payment) FROM client_details GROUP BY client_name;

结果是:

enter image description here

我真正想要的是将这两个表组合在一起,这样我就可以看到我们还有多少来自每个客户端,我们希望看看他这个月是否支付任何费用他或她的对象将他置于 NOT PAID LIST

我尝试过这个查询,但没有得到逻辑结果:

SELECT t1.client_name, sum(total_debts), sum(payment)  FROM
client_debts t1 INNER JOIN client_details t2  GROUP BY t1.client_name;

结果是:

enter image description here

我们非常感谢您提供帮助,以便更正此错误以及如何在此月份列表中付费

2 个答案:

答案 0 :(得分:0)

您忘记检查两个表中匹配同一客户端的条件。使用以下查询

SELECT t1.client_name, sum(total_debts), sum(payment) FROM 
client_debts t1 INNER JOIN client_details t2 
ON t1.ID=t2.client_id GROUP BY t1.client_name;

答案 1 :(得分:0)

您可以尝试以下查询,但建议您使用客户端ID进行加入:

select td1.client_name,td1.TotalDebt,td2.TotalPayment from (SELECT client_name, sum(total_debts) as TotalDebt FROM client_debts GROUP BY client_name) as td1
inner JOIN
(SELECT client_name, sum(payment) as TotalPayment FROM client_details GROUP BY client_name) as td2
on td1.client_name=td2.client_name