MYSQL 左连接不正确的结果

标签 mysql database left-join

<分区>

我被困了很长时间,无法找到我的查询有什么问题,我的 LEFT JOIN 中的 debit column 有问题,显示在Query Result image 如下所示。我的 debit table 的实际值是 500MYSQL 查询显示为 1500。 我在这里做错了什么。请帮助我。

这是我的客户表

customers` table

这是我的cust_credit 表

cust_credit table

这是我的cust_debit 表

cust_debit table

MYSQL查询如下

SELECT 
    customers.id as id, 
    customers.cust_name AS customer_name,
    SUM(cust_debit.debit_amount) as debit,
    SUM(cust_credit.credit_amount) as credit,
    (SUM(cust_debit.debit_amount)) - (SUM(cust_credit.credit_amount)) as balance


    FROM customers
  LEFT JOIN  cust_debit  ON customers.id = cust_debit.cust_id
  LEFT JOIN  cust_credit ON customers.id = cust_credit.cust_id


  GROUP BY customers.id
  ORDER BY customers.id

我的查询结果如下所示

Result

最佳答案

您在信用表中有多行,这会在导致问题的组依据之前形成多行。如果您取出分组依据并选择所有列,您可以看到这一点。

如果您在子连接中分组,这个问题就会消失,那么在分组依据之前,每个客户都有一行。

SELECT 
  customers.id as id, 
  customers.cust_name AS customer_name,
  SUM(cust_debit.debit_amount) as debit,
  SUM(cust_credit.credit_amount) as credit,
  (SUM(cust_debit.debit_amount)) - (SUM(cust_credit.credit_amount)) as balance
FROM customers
LEFT JOIN cust_debit  ON customers.id = cust_debit.cust_id
LEFT JOIN (
  SELECT cust_id, sum(credit_amount) as credit_amount)
  from cust_credit
  group by cust_id
) cust_credit ON customers.id = cust_credit.cust_id
GROUP BY customers.id
ORDER BY customers.id

关于MYSQL 左连接不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47780622/

相关文章:

php - 我有一个数组,不能使用implode()进行查询

php - php中多个表的UNION搜索

java - SQLServerException 结果集已关闭

mysql - 从 LEFT JOIN 设置 NULL 列的默认值并使用 WHERE 进行过滤

mysql - 如何优化这个sqlrq?合适吗?怎样做比较好?

php - MySql 使用左连接插入到 2 个不同的表中

sql - Mysql:何时使用:删除表,截断表,从表中删除

php - 无法将 xml 字符串插入 mysql 表

mysql - 如何从 iOS 应用程序连接到数据库?

php - Mysql 错误 #1305 FUNCTION db.sys_exec 不存在