MYSQL:每周,每月和每年报告

时间:2013-03-06 00:56:24

标签: mysql

我想制作可以每周,每月和每年查看的报告。

例如: 我希望看到每周注册的人,或者我想看看谁在这个月或一年中注册,以及付款。我希望看到这个6月的登记者。我希望通过使用下拉搜索来查看2010年的参与者。

//这是我每周报告的代码,我希望看到上周报名的学生,但我知道我的代码是否正确。

$datetoday=date("Y-m-d");
$result = mysql_query("
     SELECT enrollee_info.*, payments.* from enrollee_info 
 INNER JOIN payments on payments.enrollee_id=enrollee_info.e_id 
      WHERE enrollee_info.category='Walk In' 
       AND DATE_FORMAT(payments.entrydate , %Y-%m-d')>=SUBDATE('".$datetoday."' , INTERVAL 7 DAY)");

每月和每年,例如,我想查看本月注册的人等,我希望通过使用您可以选择要搜索的月份或年份的下拉列表来查看今年注册的人。

1 个答案:

答案 0 :(得分:5)

关于INTERVAL的可接受单位,请查看the manual。您只需使用开关即可确定记录的范围。

在您的下拉菜单中,您将有周,月或年。然后,您可以使用开关准备语句。

$sql = "SELECT enrollee_info.*, 
   payments.* 
FROM   enrollee_info 
       INNER JOIN payments 
               ON payments.enrollee_id = enrollee_info.e_id 
WHERE  enrollee_info.category = 'Walk In' 
       AND payments.entrydate >= Subdate(Curdate(), ";

switch ($range) {
    case "month":
        $sql .= 'INTERVAL 1 MONTH';
        break;
    case "year":
        $sql .= 'INTERVAL 1 YEAR';
        break;
    //if no match, use week
    default:
        $sql .= 'INTERVAL 1 WEEK';
}

$sql .= ')';

哪会创建这样的声明:

SELECT enrollee_info.*, 
       payments.* 
FROM   enrollee_info 
       INNER JOIN payments 
               ON payments.enrollee_id = enrollee_info.e_id 
WHERE  enrollee_info.category = 'Walk In' 
       AND payments.entrydate >= Subdate(Curdate(), INTERVAL 1 week) 

如果可能,请尽量避免从每个表中获取所有列并使用列列表。