好吧,我有 2 个 mysql 表:
1)客户
client_id conn_date monthly_bill
=========================================
10 2016-06-01 700.00
11 2016-08-30 650.00
12 2016-08-30 1000.00
13 2016-07-01 700.00
2) clients_pay_bill
cbp_id client_id bill_month
===============================
1 10 2016-08-30
2 11 2016-08-12
3 12 2016-08-08
clients
表中的conn_date
列是用户首次注册的日期或连接日期。
在 clients_pay_bill
表中,bill_month
列显示客户在哪个月份支付账单。
现在是当前月份,我想显示从连接日期到当前日期的到期账单总额。
例如:在 clients_pay_bill
表中,clients_id = 10
只支付了这个 2016-08-30 月的账单。但是没有支付这个 2016-06-08 和 2016-07-08 月份的账单。所以他现在的欠款是 1400,因为他每月的账单是 700。
我无法想象 mysql 查询应该是什么样子!我该怎么做?
更新:
最佳答案
select C.client_id,C.monthly_bill,
(
PERIOD_DIFF(EXTRACT(YEAR_MONTH from CURDATE()),
EXTRACT(YEAR_MONTH from C.conn_date))+1
-
count(P.bill_month)
)*C.monthly_bill as Need_many
from clients C
left join clients_pay_bill P
on P.client_id=C.client_id and P.bill_month<date_format(curdate(),'%Y-%m-01')
group by C.client_id
函数 PERIOD_DIFF()
返回期间之间的月数(当前月份和连接日期)。 clients_pay_bill 中的 Count()
行返回付费月份的计数。这些值之间的差值是未付薪月数。
关于php - 我如何知道连接日期(注册日期)的表日期列中不存在哪个月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39254532/