Php 生成贷款收据报告(退款或反向交易)
我正在为一个非政府组织开发一个系统,该系统为穷人提供无息贷款,借款人每月向该组织还款 我的问题是,当员工插入错误值的付款时,反向交易或退款,因此他应该对此交易进行反向操作 我是通过插入此付款的负值来实现的Php 生成贷款收据报告(退款或反向交易),php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在为一个非政府组织开发一个系统,该系统为穷人提供无息贷款,借款人每月向该组织还款 我的问题是,当员工插入错误值的付款时,反向交易或退款,因此他应该对此交易进行反向操作 我是通过插入此付款的负值来实现的 id ║ loan_id ║ p_amount ║ p_date ║ rev_p_id ║ created_on ║ ═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣ 1
id ║ loan_id ║ p_amount ║ p_date ║ rev_p_id ║ created_on ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
1 ║ 1 ║ 500 ║ 2011-01-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
2 ║ 1 ║ 500 ║ 2011-02-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
3 ║ 1 ║ 500 ║ 2011-03-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
4 ║ 1 ║ -500 ║ 2011-04-01 ║ 2 ║ 2011-01-01
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
5 ║ 1 ║ 500 ║ 2011-05-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
6 ║ 1 ║ 500 ║ 2011-06-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
7 ║ 1 ║ 500 ║ 2011-07-01 ║ null ║ 2011-01-01 ║
我有贷款表,表中有以下列:
id ║ amount ║ loan_date ║ created_on ║ emp_id ║ client_id ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
1 ║ 10,000 ║ 2011-01-01 ║ 2010-01-01 ║ 100 ║ 600 ║
收入表格
id ║ loan_id ║ p_amount ║ p_date ║ rev_p_id ║ created_on ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
1 ║ 1 ║ 500 ║ 2011-01-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
2 ║ 1 ║ 500 ║ 2011-02-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
3 ║ 1 ║ 500 ║ 2011-03-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
4 ║ 1 ║ -500 ║ 2011-04-01 ║ 2 ║ 2011-01-01
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
5 ║ 1 ║ 500 ║ 2011-05-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
6 ║ 1 ║ 500 ║ 2011-06-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
7 ║ 1 ║ 500 ║ 2011-07-01 ║ null ║ 2011-01-01 ║
我的问题是,当我想要生成报告时,我使用日期之间的总和查询
案例1
在2011-01-01到2011-06-01之间,我应该给出=2500
这是真的,因为付款编号2和它的反面在日期范围内
案例2
在2011-03-01到2011-06-01之间,我应该给我=1500,并且不求负收入的和,因为它与付款id 2相反,并且不在此期间
我如何确定何时应通过mysql对反向值求和
php我正在使用codeigniter和mysql我会在您的
收据
表上进行自联接,以获取任何冲销的冲销交易日期,并使用该日期确定冲销是否在报告期内:
id ║ loan_id ║ p_amount ║ p_date ║ rev_p_id ║ created_on ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
1 ║ 1 ║ 500 ║ 2011-01-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
2 ║ 1 ║ 500 ║ 2011-02-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
3 ║ 1 ║ 500 ║ 2011-03-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
4 ║ 1 ║ -500 ║ 2011-04-01 ║ 2 ║ 2011-01-01
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
5 ║ 1 ║ 500 ║ 2011-05-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
6 ║ 1 ║ 500 ║ 2011-06-01 ║ null ║ 2011-01-01 ║
═══╬═══════════╬════════════╬═════════════╬═════════════╬═════════════╣
7 ║ 1 ║ 500 ║ 2011-07-01 ║ null ║ 2011-01-01 ║
select r1.loan_id, sum(r1.p_amount) sum_amount
from receipts r1
left join receipts r2 on r1.rev_p_id=r2.id
where coalesce(r2.p_date,r1.p_date)>=... and coalesce(r2.p_date,r1.p_date)<=...
group by r1.loan_id
选择r1.loan\u id,sum(r1.p\u amount)sum\u amount
从收据r1
r1上的左连接收据r2。rev_p_id=r2.id
其中coalesce(r2.p_日期,r1.p_日期)>=。。。和coalesce(r2.p_日期,r1.p_日期)非常感谢您,我现在将尝试您的解决方案。您的解决方案不适用于我,因为我需要获取所有收据,因为我们使用group By。对不起,但我不明白您的意思。请详细说明。还要记住,你的问题不是要得到所有的收据,而是要得到一个给定时期的金额。