2011-03-04 85 views
0

我正计划进行PHP/MySQL设置。基本上,我想知道什么是接近最好的办法,或者接近这个更有效的方式。检查某个日期是否已完成

我正在考虑获取当前月份(PHP),并将其与通过IF语句进行的近期付款进行比较。那些没有付款的人会回应那些没有支付其总金额的复杂数字。

我会用while循环加起来总共为公寓大楼,然后比较,为rent_total。如果total_paid小于rent_total它将会显示为未支付。

apt_payments

  • ID(INT)
  • resident_name(VARCHAR)
  • complex_number(SMALLINT)
  • 量(DECIMAL [10,2])
  • PAYMENT_DATE(DATETIME)
  • apt_complex

  • ID(INT)
  • complex_number(SMALLINT)
  • 类型(VARCHAR)
  • start_lease(DATE)
  • end_lease(DATE)
  • rent_total(DECIMAL [10,2])
  • 空置(INT)
  • +3

    你有什么问题吗? – reggie 2011-03-04 18:20:43

    回答

    0

    未经测试,但:

    SELECT cplx.*, amtPaid 
    FROM apt_complex cplx 
    LEFT JOIN (
        SELECT sum(amount) as amtPaid, 
          year(payment_date) as payYear, 
          month(payment_date) as payMonth, 
          complex_number 
        FROM apt_payments 
        GROUP BY complex_number, year(payment_date), month(payment_date) 
    ) payments ON payYear = [YEAR] AND payMonth = [MONTH] 
          AND payments.complex_number = cplx.complex_number 
    

    我认为有些事情里这将给你一个所有公寓的清单和他们当月支付的金额。您可以在PHP中循环显示结果,并根据值amtPaidrent_total决定打印任何您想要的内容。

    您还可以在查询中输入CASE声明并检查付款。然后,查询可以简单地返回付费或无偿。 [YEAR][MONTH]应该被MySQL中的日期调用所取代,或者让PHP将月/年放入查询中。我不想假设你会在哪个月看。