Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL LEFT JOIN RÉSULTAT INCORRECT

Vous avez plusieurs lignes dans la table de crédit, cela fait plusieurs lignes avant le groupe qui cause le problème. Vous pouvez le voir si vous supprimez le groupe par et sélectionnez toutes les colonnes.

Si vous groupez par dans une sous-jointure, ce problème disparaît, vous avez alors une ligne par client avant le groupe par.

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