gpt4 book ai didi

mysql - 从 ACTUAL 值左连接 MIS-MATCH

转载 作者:行者123 更新时间:2023-11-29 05:57:11 24 4
gpt4 key购买 nike

经过多次尝试,我无法修复此左连接查询。我的查询返回的 debit_amount 与实际值不同,而我的两个月的实际 debit_amount 都小于给定值。

我的问题是为什么我的左连接值与实际值不匹配,我该如何解决这个问题以获得实际值。

我的完整查询和结果如下所示。

SELECT 
MONTHNAME(cc.credit_date) as month,
IFNULL(SUM(cc.credit_amount),0) AS credit,
IFNULL(SUM(cd.debit_amount),0) AS debit_amount,
MONTHNAME(cd.debit_date) AS month
FROM
cust_credit AS cc
LEFT JOIN
(SELECT
((cd.debit_date)),
IFNULL(SUM(cd.debit_amount), 0) AS debit_amount
FROM
cust_debit AS cd
GROUP BY
MONTHNAME(cd.debit_date)) cd ON ((MONTHNAME(cd.debit_date)) = MONTHNAME(cc.credit_date))
GROUP BY
MONTHNAME(cc.credit_date)

屏幕截图中的查询结果:

JOIN QUERRY

如果我只运行 join 来检查。查询是

  SELECT (MONTHNAME(cd.debit_date)) , IFNULL(SUM(cd.debit_amount),0) AS debit_amount FROM cust_debit AS cd GROUP BY MONTHNAME(cd.debit_date )

该查询的结果:

[ RESULT IMAGE[2]

信用表

cust_credit

借记表

cust_debit

最佳答案

根据理论,LEFT JOIN 将为您提供数据,该数据在表之间和左表中都是通用的。

因此,与 INNER JOIN 或直接从其中一个表中选择行相比,LEFT JOIN 获得更多行的可能性更大。

现在,您将查看查询,您已经在以下条件下进行了连接。

ON ( (MONTHNAME(cd.debit_date)) = MONTHNAME(cc.credit_date))

因此,您将获得 cust_credit 表中的所有行以及满足上述条件的所有行。

==更新==

这是示例 SQL,您可能需要进行相应的更改。因此,您正在尝试获取特定月份的所有贷方和借方。这可以通过表之间的简单 INNER JOIN 实现。

SELECT cd.month, cc.credit_amount, cd.debit_amount FROM 
(SELECT
MONTHNAME(cc.credit_date) as month,
IFNULL(SUM(cc.credit_amount),0) AS credit_amount
FROM
cust_credit cc
GROUP BY MONTHNAME(cc.credit_date)) cc

INNER JOIN

(SELECT
MONTHNAME(cd.debit_date) as month,
IFNULL(SUM(cd.debit_amount),0) AS debit_amount
FROM
cust_debit cd
GROUP BY MONTHNAME(cd.debit_date)) cd ON cc.month=cd.month;

关于mysql - 从 ACTUAL 值左连接 MIS-MATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com