我有一个名为'orders'的表,其中有多行具有不同的日期。
我想构建一个每月订单数量的图表,所以我需要查询一个如下所示的数组:
如图所示,即使没有订单,月份也会显示。
从那里,我需要加载数组的数量:
$data1y=array(3,1,0,8...);
虽然我会有这样一个月的数组:
$graph->xaxis->SetTickLabels(array('Jan','Feb','March','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'));
我试过像这样的SQL,但没有运气:
SELECT COUNT(*) FROM orders GROUP BY month(date)
答案 0 :(得分:2)
您的查询应该是这样的:
SELECT DATE_FORMAT(`date`, '%Y%m') AS `Ym`, COUNT(*) AS `count`
FROM `orders`
GROUP BY `Ym`
的 demo 强>
P.S。您可以在PHP中填写缺失的月份,也可以在this等SQL中填写。
答案 1 :(得分:1)
使用如下查询后,您可以在PHP中执行所有操作: -
SELECT date FROM orders
如果在运行之后,例如PDOStatement::fetchAll()
,你有一个名为$ dateArray的数组,其中包含数据库中的日期,那么你可以这样做: -
$countArray = ['Jan' => 0, 'Feb' => 0, 'Mar' => 0, 'Apr' => 0, 'May' => 0, 'Jun' => 0, 'Jul' => 0, 'Aug' => 0, 'Sep' => 0, 'Oct' => 0, 'Nov' => 0, 'Dec' => 0];
foreach($dateArray as $dateString){
$date = new \DateTime($dateString);
$countArray[$date->format('M')]++;
}
的详细信息,请参阅PHP手册