Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据年份对MySQL数据进行分组_Php_Mysql_Codeigniter 3 - Fatal编程技术网

Php 根据年份对MySQL数据进行分组

Php 根据年份对MySQL数据进行分组,php,mysql,codeigniter-3,Php,Mysql,Codeigniter 3,我有一个疑问: SELECT DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%Y') AS `year` , DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%b') AS `month` , COUNT(odd_Id) as total, status, odd_date_created FROM odd_data WHERE status = 1 GROUP BY

我有一个疑问:

SELECT DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%Y') AS `year`
       , DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%b') AS `month`
       , COUNT(odd_Id) as total, status, odd_date_created FROM odd_data
WHERE status = 1
GROUP BY DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%m')
   HAVING DATE_FORMAT(odd_date_created + INTERVAL -3 DAY,'%Y') = 2018
$yearToDate将从“选择”下拉列表中动态显示。当用户选择2017年时,会设法获取数据,但如果选择2018年,则不会重新运行数据


有人能帮我吗。

问题出在你的
分组依据
条款上。由于您是按月份分组的,每个月的第一个数据是在2017年,因此select中的
DATE\u格式(奇数创建的日期+间隔-3天,'%Y')
的值几乎肯定会在2017年出现(尽管由于没有隐含订单,因此无法保证)。您还需要按年度进行分组,以便获得每年每个月的数据。然后,您可以使用
have
选择特定年份。请注意,您可以在
GROUP BY
中使用别名,并在
中使用
子句,因此您可以将查询重写为:

SELECT DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%Y') AS `year`,
       DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%b') AS `month`,
       COUNT(odd_Id) as total, status, odd_date_created FROM odd_data
WHERE status = 1
GROUP BY year, month
HAVING year = 2018

请注意,在此查询中创建的
状态
奇数日期
是没有意义的,因为它们将从与
WHERE
具有
子句相匹配的
项集中返回随机值。

您确定2018年有
状态=1的数据吗?发布一些样本数据会有所帮助。请参见@Nick yes,3月20日之前的数据。即使我使用phpmyadmin将查询粘贴到SQL查询中,它的返回0奇数日期创建的数据类型是什么?