-1

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

例如:我想查看每周注册的人员,或者我想查看本月或本年度的注册人员以及付款情况。我想在今年六月见报名者。我想通过使用下拉搜索来查看 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)");

每月和每年,例如,我想查看本月注册的人员等,并且我想通过使用下拉菜单查看今年注册的人员,您可以选择要搜索的月份或年份。

4

1 回答 1

5

查看有关可接受单位的手册INTERVAL。您可以简单地使用开关来确定记录的范围。

在您的下拉列表中,您将拥有周、月或年。然后,您可以使用 switch 来准备您的语句。

$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) 

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

于 2013-03-06T01:02:00.557 回答