sql >> Base de Datos >  >> RDS >> Mysql

MYSQL LEFT JOIN RESULTADO INCORRECTO

Tiene varias filas en la tabla de créditos, esto genera varias filas antes del grupo que causa el problema. Puede ver esto si saca el grupo por y selecciona todas las columnas.

Si agrupa por en una subunión, este problema desaparece, entonces tiene una fila por cliente antes del grupo por.

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