php - 我如何知道连接日期(注册日期)的表日期列中不存在哪个月份?

标签 php mysql date

好吧,我有 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 查询应该是什么样子!我该怎么做?

更新:

enter image description here

最佳答案

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/

相关文章:

php - mysql 持久连接的优点

javascript - UTC 日期对象操作

php - HIghcharts 导出服务器托管 ph-batik

php - 将行与月份中的日期合并在一起

mysql - 为什么 MySQL Switch-Case 没有选择正确的值?

MySQL只插入第一行

PHP:一旦我在 PHP 中获得值,如何更新我已经打印的 html 元素

javascript - 检查日期是否在 11 月 1 日到 3 月 1 日之间,如果是,则执行某些操作

android - date.getTIme() 的负值

php - 未找到 Amazon EMR 流式映射器/缩减器