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

Requête SQL pour le calcul du solde du compte

Vous calculez essentiellement le produit croisé entre un tdebits et tcredits , c'est-à-dire pour chaque ligne dans tdebits vous parcourez toutes les lignes de tcredits . Il n'y a pas non plus de raison de rejoindre des accounts (sauf si to_account_id et from_account_id ne sont pas des clés étrangères).

Vous n'avez qu'à faire un seul passage sur les transactions et vous avez juste besoin de savoir si le montant est un crédit ou un débit.

SELECT SUM(CASE WHEN t.to_account_id = $1 THEN t.amount ELSE -t.amount END) AS amount
FROM transactions AS t
WHERE (t.to_account_id = $1 OR t.from_account_id = $1)
  AND t.succeed = true

Si un compte peut être transféré vers lui-même, ajoutez un t.to_account_id <> t.from_account_id .