Anda pada dasarnya menghitung produk silang antara tdebits
dan tcredits
, yaitu untuk setiap baris dalam tdebits
Anda mengulangi semua baris dalam tcredits
. Juga tidak ada alasan untuk bergabung ke accounts
(kecuali to_account_id
dan from_account_id
bukan kunci asing).
Anda hanya perlu melakukan satu kali transaksi pass over dan Anda hanya perlu mengetahui apakah jumlahnya kredit atau debit.
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
Jika akun dapat mentransfer ke dirinya sendiri, tambahkan t.to_account_id <> t.from_account_id
.