php - MySQL,查找查询中不存在的日期

标签 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 中做到这一点,但我不知道如何做。任何帮助都会很棒。

最佳答案

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

请记住,仅选择日期并将其与 PHP 中的某些内容进行比较通常会比复杂的 MySQL 端计算(如果可能的话)快得多。

我建议您:

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

关于php - MySQL,查找查询中不存在的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693695/

相关文章:

javascript - 如何在 WordPress 中隐藏自定义控件?

php - 3 个表的一列中所有数字的总和?

php exec 返回的结果少于直接进入命令行的结果

php - "Triple Join"?? INNER-JOIN 是否可以添加 'l query after ' WHERE' 以排除第三个表中的行?

php - 调用函数 - 如何简化它?

php - 如何从命令的 "php artisan list"隐藏默认 artisan 命令?

php - 使用 Laravel Eloquent 处理对话

mysql - SQL - 内部连接

mysql - 通过VBA在Access前端中执行带有参数的MySQL存储过程

javascript - 循环遍历对象数组并在 JSON 中添加对象 - Javascript