Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL LEFT JOIN FALSCHES ERGEBNIS

Sie haben mehrere Zeilen in der Kredittabelle, dies macht mehrere Zeilen vor der Gruppe, durch die das Problem verursacht wird. Sie können dies sehen, wenn Sie die Gruppierung nach entfernen und alle Spalten auswählen.

Wenn Sie in einer Unterverknüpfung gruppieren, verschwindet dieses Problem, dann haben Sie eine Zeile pro Kunde vor der Gruppierung.

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