这是我的2个mysql表。在clients
表中显示用户连接日期,并在clients_pay_bill
表中显示用户从连接日期(conn_date)支付他/她的帐单的月份。
a)客户
clients_id conn_date
=======================
1 2016-06-01
2 2016-07-17
3 2016-06-22
4 2016-09-03
b)clients_pay_bill
cpp_id clients_id paid_month
===================================
1 1 2016-07-03
2 2 2016-07-22
3 4 2016-09-09
4 2 2016-07-22
现在,我想显示所有月份 s ,其中包含直到当前日期才支付客户的天数和月数。
例如:
clients_id = 1
连接日期(conn_date) 2016-06-01 ,他直到现在才支付 2016-07-03 月帐单。所以sql查询将在几个月后输出:
2016-06
2016-08
2016-09
**2016-07 will not print because he already paid this months bill**
我还希望显示天数和月数,例如:某些天的3个月......
我无法想象sql查询应该是什么样的?
答案 0 :(得分:0)
我会建议你采用一种不同的方法,因为这个方法会在逻辑上和性能上说话。应该采取的方式是让记录在clients_pay_bill
中进行处理,而不是在有人支付但他/她应该支付时,作为对其的补充,应该有2列:due_date
和{{1} }。所以你的表格看起来像这样:
paid_date
您可以通过cron生成每月到期通知,或者如果您希望保留SQL而不是通过事件。在此之后,您可以通过简单的查询选择pay_month中的哪个到期注释cpp_id clients_id due_month paid_month
====================================================
1 1 2016-06-03 NULL
1 1 2016-07-03 2016-07-03
1 1 2016-08-03 NULL
2 2 2016-09-22 NULL
3 4 2016-09-09 NULL
4 2 2016-07-22 NULL
,如果付款已完成,则会更新NULL
列。
关于日子,我不确定你想要达到什么效果(例子会有所帮助),但是有了应有的注释列表,已经有一半的时间来计算这些记录的天数(例如paid_month
)