【问题标题】:mySQL : fetch multidimensional arrays separated and sorted by date columnmySQL:获取按日期列分隔和排序的多维数组
【发布时间】:2016-12-14 13:14:51
【问题描述】:

在 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 个发票数组。然后每个发票数组都有一组单元格(col)对应于表的列(不求和)1:1。所以this.lau_的答案肯定有不同的做法。它对我不起作用。

【问题讨论】:

    标签: php mysql sql arrays


    【解决方案1】:

    您可以按年/月分组,然后在您的num 上应用聚合函数(例如AVGSUM 等)。这应该工作:

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

    【讨论】:

    • 见我上面的编辑
    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2023-03-14
    • 2013-11-30
    相关资源
    最近更新 更多