MySQL,查找查询中不存在的天数

时间:2015-02-24 10:46:04

标签: php mysql

我想知道我的数据库中没有哪些日期,我有这个查询

SELECT Hour.date
     , User.l_name
     , User.f_name 
  FROM kadry.hours AS Hour 
  LEFT
  JOIN kadry.subordinates Subordinate 
    ON Subordinate.supervisor_id LIKE "02705"
  LEFT
  JOIN kadry.users User 
    ON User.assigned = Subordinate.department_id 
 WHERE Hour.subordinate_id = User.id 
   AND Hour.date IN("2015-02-09","2015-02-10","2015-02-11"
                   ,"2015-02-12","2015-02-13","2015-02-16"
                   ,"2015-02-17","2015-02-18","2015-02-19"
                   ,"2015-02-20","2015-02-23") 
 ORDER 
    BY User.id ASC
     , Hour.date ASC

并且在php中我可以处理它,我可以检查是否有任何日期丢失,但我认为有一种方法可以在MySQL中进行,但我不知道如何。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

MySQL是一个数据库,因此,它只能显示它有什么。有一些高级选择命令,但通常你应该想要在PHP中处理数据的任何逻辑。

请记住,只选择日期并将它们与PHP中的内容进行比较通常比复杂的MySQL边计算要快得多。

我建议你:

  1. 准备PHP中所有可能日期的列表(生成或 预definied)。将它们存储在数组中。
  2. 从数据库中恢复所有日期。
  3. 删除在MySQL中找到的先前准备好的数组中的所有日期。方法取决于来自MySQL的数据,但最快应该是运行 预测MySQL记录。