U berekent in feite het kruisproduct tussen een tdebits
en tcredits
, d.w.z. voor elke rij in tdebits
je herhaalt alle rijen in tcredits
. Er is ook geen reden om lid te worden van accounts
(tenzij to_account_id
en from_account_id
zijn geen externe sleutels).
U hoeft slechts één overboekingstransactie uit te voeren en u hoeft alleen te weten of het bedrag een credit- of debetbedrag is.
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
Als een account naar zichzelf kan worden overgezet, voeg dan een t.to_account_id <> t.from_account_id
toe .