php - mysql : fetch multidimensional arrays separated and sorted by date column

标签 php mysql sql arrays

在 mySQL invoice 表中,还有一个 date 列,如 02.08.2016 (dd.mm.yy)。现在,当我查询表并获取按日期列排序的行时,我最终需要一个包含以月份分隔的多维数组的结果。 SELECT 语句就是这样;

SELECT * FROM inv ORDER BY date ASC

获取的结果应如下所示:

  array [0] { 

           array [0] {
             [num]  => [230]
             [date] => [02.08.2016] // august
             [...]
           }

           array [1] {
             [num]  => [231]
             [date] => [02.08.2016] // august
             [...]
           }
           ...
   }

    array [1] { 

           array [0] {
             [num]  => [350]
             [date] => [10.09.2016] // september
             [...]
           }

           array [1] {
             [num]  => [351]
             [date] => [02.09.2016] // september
             [...]
           }
           ...
    }

    ...

我需要它在每个月结束时创建一个单独的 CSV 导出文件。我可以使用巧妙的 mySQL 语句来实现此目的,还是需要随后使用 PHP 工具处理结果数组?如果是这样,最有效的方法是什么?

欢迎任何帮助和建议

编辑:

好像有什么误会。为了更清楚地说明,我需要列出每月所有可用发票的数组。假设表中有 10 个月,那么应该有 0..9 之间的 10 个数组。然后,每个数组都会将每月所有可用的发票列为数组(正如我在下面计算的那样)。假设数组 0(第一个月)包含 100 个发票数组。然后,每个发票数组都有一组与表的列 1:1 对应的单元格 (col)(不求和)。所以this.lau_的答案一定有不同的做法。它对我不起作用。

最佳答案

您可以按年/月分组,然后对 num 应用聚合函数(例如 AVGSUM 等) 。这应该有效:

SELECT
    extract(year_month FROM date) as month,
    SUM(num) as sum_num
FROM inv
GROUP BY month ORDER BY month ASC;

关于php - mysql : fetch multidimensional arrays separated and sorted by date column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41143590/

相关文章:

javascript - Strongloop - 使用 model.js 执行 PHP

php - Laravel 部署您的要求无法解决为一组可安装的包

php - 显示多个sql查询并按时间戳排序

sql - 如何在 DB2 (8.x) 中查找所有打开/事件连接

php - 避免在 PHP 中执行部分变量

php - 如何将时间戳月份与 PHP 中 Spinner 中选定的月份进行比较

mysql - 工作台编辑器警告虚假错误

php - 使用 PHP/MySQL 安全地存储和服务用户文件

java - 结果集字段索引减一

MySQL 将第一个值(-1)设置为数字?