我想知道我的数据库中不存在哪些日期,我有这个查询
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 端计算(如果可能的话)快得多。
我建议您:
- 准备 PHP 中所有可能日期的列表(生成的或 预先定义)。将它们存储在数组中。
- 从数据库中恢复所有日期。
- 删除您在 MySQL 中找到的先前准备的数组中的所有日期。方法取决于来自MySQL的数据,但最快应该是运行 foreach 遍历 MySQL 记录。
关于php - MySQL,查找查询中不存在的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693695/