Du beregner grundlæggende krydsproduktet mellem en tdebits
og tcredits
, dvs. for hver række i tdebits
du itererer over alle rækkerne i tcredits
. Der er heller ingen grund til at tilslutte sig accounts
(medmindre to_account_id
og from_account_id
er ikke fremmednøgler).
Du behøver kun at foretage én overførsel, og du skal blot vide, om beløbet er en kredit- eller debetbeløb.
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
Hvis en konto kan overføre til sig selv, skal du tilføje en t.to_account_id <> t.from_account_id
.