mysql - sum 函数不正确的值和本月尚未付款的列表

标签 mysql sql

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

第 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', date =..., time =...

这些信息被输入到名为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

我真正想要的是将这两个表合并在一起,这样我就可以看到我们还从每个客户那里得到了多少钱,我们想看看他本月是否支付了任何费用是否愿意将他列入我们的未付款名单

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

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

感谢任何帮助,以纠正此错误以及如何制作本月尚未付款列表

最佳答案

您可以尝试下面的查询,但建议您使用客户端 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

关于mysql - sum 函数不正确的值和本月尚未付款的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788550/

相关文章:

mysql - 查询作者 > 1 的每个出版商

sql - ORA-01476 : "divisor is equal to zero" for SQL query (Oracle 10g)

mysql - select 语句中的子查询找不到派生表?

mysql - 将枚举值从 1 更新为 0 mysql?

mysql - 如何在 Perl 脚本中为 MySQL 设置变量和过程变量

mysql - SQL 列出具有特定列名的所有表

c# - 无法从 DoWork() 内部从 MySQL 数据库获取信息

sql - 创建一个在 Teradata 中包含 "with recursive"语句的递归 View

java - 包含撇号 php 的文本

java - SQL的IN子句中如何使用arraylist作为参数