【问题标题】:Left join MIS-MATCH from ACTUAL values从 ACTUAL 值左连接 MIS-MATCH
【发布时间】:2018-07-01 10:22:31
【问题描述】:

经过多次尝试,我无法修复此左连接查询。我的查询返回的 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 来检查。查询是

  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 )

查询结果:

[

信用表

借记表

【问题讨论】:

标签: mysql sql join left-join


【解决方案1】:

根据理论,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;

【讨论】:

  • 直接选择我会得到我的实际结果,我在我的问题中附上了querry 和reulten 图像。我必须做些什么来解决这个问题,第二件事我也试过inner join 那也有同样的结果。你是对的,我的行总结起来我知道,我该如何解决我的问题。感谢您的宝贵时间,抱歉我的英语不好,请帮帮我。
  • @Newbees 我给了你理论。现在,我不知道,你想达到什么目的。所以,我不确定我应该给出什么建议
  • 先生,我只想总结同月的所有贷方和借方,仅此而已,您能指导我吗?
  • @Newbees 为什么不简单地在表之间使用内连接。一会儿我会更新
  • @Newbees 我希望你得到了你所期望的结果。请赞成这个答案。此外,尝试在最少的指导下自己学习一些东西。这将帮助您提高
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多