Du beräknar i princip korsprodukten mellan en tdebits
och tcredits
, d.v.s. för varje rad i tdebits
du itererar över alla rader i tcredits
. Det finns heller ingen anledning att gå med i accounts
(såvida inte to_account_id
och from_account_id
är inte främmande nycklar).
Du behöver bara göra en övergångstransaktion och du behöver bara veta om beloppet är en kredit eller debet.
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
Om ett konto kan överföras till sig självt, lägg till ett t.to_account_id <> t.from_account_id
.