计算用户当前钱包余额的最佳方法是什么?

时间:2017-05-18 06:57:26

标签: php mysql codeigniter transactions activerecord-calculations

我正在尝试为Web应用程序实现钱包。我现在提出的数据库设计是一个钱包交易表,如下所示:

wallet_tr_id | user_id | amount | tr_type (debit/credit) | datetime | tr_id

申请中的用户可以通过现金或钱包信用进行交易。还有另一个transactions表,其中包含所有交易信息,通过钱包信用支付/获得的信息将使用外键tr_id输入上表。

现在,向用户显示他/她当前钱包余额的最佳方式是什么?

我应该为该用户计算sum total of credits - sum total of debits,还是应该为其他表中的用户维护current_balance

PS:最终任何用户都不会有大量的交易。

1 个答案:

答案 0 :(得分:4)

无需存储余额。按你说的那样计算:

select sum(case when tr_type = 'credit' then amount else -amount end) as balance
from transactions
where user_id = 12345;