Php 从日期开始每年的工资增加,但某些日期(年)不在数据库中

Php 从日期开始每年的工资增加,但某些日期(年)不在数据库中,php,mysql,Php,Mysql,我正在开发php mysql HR应用程序,我有一个表,其中包含一些字段,如日期、薪资和递增薪资,如下面的屏幕截图所示。 我想要一个每年的记录列表,但某一年(日期)不在数据库中,如何获得该年,如第二个屏幕截图所示 谢谢 你不想要那个结果 首先,ID=2已在2014年使用;把2013年分配给它是个坏主意。第二,如果说2013年的工资是3500,而增量是0,那是毫无意义的,因为2013年不是t在数据库中 如果2013应该有这些值,那么将它们放入数据库中 否则,创建一个年份表(或整数表),并使用外部联

我正在开发php mysql HR应用程序,我有一个表,其中包含一些字段,如日期、薪资和递增薪资,如下面的屏幕截图所示。 我想要一个每年的记录列表,但某一年(日期)不在数据库中,如何获得该年,如第二个屏幕截图所示 谢谢

你不想要那个结果

首先,ID=2已在2014年使用;把2013年分配给它是个坏主意。第二,如果说2013年的工资是3500,而增量是0,那是毫无意义的,因为2013年不是t在数据库中

如果2013应该有这些值,那么将它们放入数据库中

否则,创建一个年份表(或整数表),并使用外部联接将其包含在查询中

create table years (
  yr integer primary key
);

insert into years values
(2012), (2013), (2014), (2015), (2016), 
(2017), (2018), (2019), (2020), (2021);
现在您可以使用外部联接来联接这两个表。对于外部联接,
coalesce()
表达式不是严格必需的,但我认为它表达了您想要的结果

select salaries.id, coalesce(salaries.date, years.yr) as date, 
       salaries.salary, salaries.increment
from years
left join salaries on 
salaries.date = years.yr
where years.yr between 2012 and 2015
order by years.yr;

您是否有一些您一直在处理的查询代码,我们可能会在其中找到错误-或者您只是希望有人会为您编写这些代码?您是否尝试过自己的解决方案?如果是这样的话,你能给我们看一些代码吗?我只使用了一个简单的查询来获取年份选择年份(生效日期)作为年份,旧的工资,新的工资,新的工资-旧的工资作为从表中输入的数据,但我不知道如何获取不在数据库中的年份?感谢迈克·谢里尔的回答,概念很好!!!祝你好运