【发布时间】:2014-12-30 00:12:02
【问题描述】:
我有一个应用程序,我希望用户在其中输入工作历史记录。我使用 DATE 格式(每个作业的 start_date 和 end_date)将结果存储在 mysql 表中。因此,例如,在几个条目之后,它可能看起来像这样(job_history 表:
Job Start End
Dishwasher 2013-07-10 2014-03-28
Banker 2014-04-02 2014-10-10
Cahsier 2014-10-11 2014-12-20
我正在尝试设置一个 mysql 查询,该查询将检查某年是否缺少任何天数。对于我们的示例,让我们使用 2014。从 2014-03-29 到 2014-04-01 有缺失的天数。
我无法通过搜索找到任何好的示例。我认为有比 PHP 循环和 365 查询更好的方法(哎呀!)。谢谢
编辑:更新示例以合并年初和年终:
Job Start End
Dishwasher 2013-07-10 2013-12-01
Banker 2014-01-10 2014-10-10
Cahsier 2014-10-11 2014-12-20
在此示例中,我们的输入年份为 2014 年,我们将在年初有 9 天未被发现,而在年底有 11 天。
【问题讨论】:
-
为什么不使用 mysql
DISTINCT然后在结果中循环查找 php.ini 中缺少的日期。它仍然是一个查询,但您可以在 php 代码中管理逻辑。 -
工作类型总是只有 3 种吗?例如洗碗机、银行家和收银员?如果是这样,您可能可以创建一个交叉表查询,然后处理。
-
您有唯一标识符列吗?像作为主键的表中的 ID?
-
DISTINCT 的想法很有趣,除非出现更好的东西,否则可以尝试一下。可以有无限数量的作业类型。是的,我有一个唯一的 ID 列
-
如果工作类型的数量不受限制,交叉表将不起作用,因此我同意 Chuck 的建议。为什么会循环 365 查询?