आप मूल रूप से एक tdebits
. के बीच क्रॉस उत्पाद की गणना कर रहे हैं और tcredits
, यानी tdebits
. में प्रत्येक पंक्ति के लिए आप tcredits
. में सभी पंक्तियों पर पुनरावृति कर रहे हैं . accounts
में शामिल होने का कोई कारण भी नहीं है (जब तक to_account_id
और from_account_id
विदेशी कुंजी नहीं हैं)।
आपको केवल एक लेन-देन पास करने की आवश्यकता है और आपको केवल यह जानने की आवश्यकता है कि राशि क्रेडिट है या डेबिट।
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
यदि कोई खाता स्वयं को स्थानांतरित कर सकता है, तो एक t.to_account_id <> t.from_account_id
जोड़ें ।