在 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
应用聚合函数(例如 AVG
、SUM
等) 。这应该有效:
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/