如何在mysql中按季度分组并在php中检索

时间:2014-07-19 01:41:35

标签: php mysql

我有一张表格,其中包含产品订单和订购日期。使用DATE()将日期插入表中。客户可以通过选择按月,季度,年度或总计查看这些订单的统计数据。我需要从头开始检索每个订单,因此没有开始日期,只有结束日期(今天),需要对它们进行排序。

所以,如果他们按季度选择(数据库从2006年开始),那么它需要显示2006年的每个订单,每季度然后使用PHP,我需要像这样显示:

2006年第1季度

<小时/> 日期,产品1,数量,价格
日期,产品2,数量,价格

2006年第2季度

<小时/> 日期,产品1,数量,价格
日期,产品2,数量,价格



点。

2014年第1季度

<小时/> 日期,产品1,数量,价格
日期,产品2,数量,价格

有没有办法对它进行排序?我可以自己添加数量,价格和产品名称等内容。我有兴趣弄清楚当使用DATE()填充数据库中的字段时如何对日期进行排序。我希望这个问题足够清楚。谢谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用mySQL的QUARTER(日期)功能?如果要在检索之后而不是在检索期间进行排序,请在输出中添加一列并使用QUARTER(日期)填充它,然后按该列排序。

答案 1 :(得分:0)

一个简单的方法就是首先找出一个起点

select YEAR(date_column) as min_year, QUARTER(date_column) as min_quarter from table order by date_column limit 1;

然后您可以从该索引开始在PHP中进行打印:

for($i=$min_year; $i <= date('Y'); $i++){
    for($j=$min_quarter; $j<=ceiling(date('m')); $j++){
        echo "Quarter $j - $i";
        mysql_query("SELECT date, product, quantity, price FROM table WHERE QUARTER(date)=$j and YEAR(date)=$i ORDER BY date");
        //print your rows
        echo "\n";
    }
}