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 .