使用先前值填充数组中的间隙

时间:2015-05-22 05:17:07

标签: php mysql

我有一个名为salary_raise的表格,如下所示:

id | employee_id | salary | year | month | date
1  | 1           | 1000   | 2014 | 2     | 2014-01-30
2  | 1           | 1200   | 2015 | 3     | 2015-02-20
3  | 1           | 1300   | 2015 | 4     | 2015-03-29

......等多名员工。它仅在工资增加时保留记录(这可以在一段时间内随机发生)。

现在我可以提取一个看起来像$salary['year']['month'] = $salary_value的数组:

[2014]
      [2] => 1000
[2015]
      [3] => 1200
      [4] => 1300

我需要提取一份完整的报告,其中包含每月最新的工资(自动填写缺失的月份/年),例如:

[2014]
      [2] => 1000
      [3] => 1000
      [4] => 1000
      [5] => 1000
      [6] => 1000
      [7] => 1000
      [8] => 1000
      [9] => 1000
      [10] => 1000
      [11] => 1000
      [12] => 1000
[2015]
      [1] => 1000
      [2] => 1000
      [3] => 1200
      [4] => 1300
      [5] => 1300

我无法通过使用php和/或mysql来弄清楚如何做到这一点。 非常感谢!

1 个答案:

答案 0 :(得分:1)

为了“填补空白”,您需要在某处获取信息。

在mysql中执行此操作的最简单方法是使用一些通用日历表,列出月份数,年份等单个值。

所以给定一个表months(month)和一个表years(year),前者包含1..12,后者包含2010..2017(例如),我们可以{{1}这两个人每个月都会给我们一个月,然后cross join left join表格。

这将为我们留下一个包含一些条目和大量空值的表,因此我们需要使用一些变量来填充最后一个工资条目的salary_raise值。

null

demo here

当然,您需要将此限制为不再检查日期 - 这应该很容易。