我想知道数据库中没有哪些日期,我有这个查询
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是一个数据库,因此,它只能向您展示它的功能。有一些高级的select命令,但通常您应该想要在PHP中处理数据的任何逻辑。
请记住,如果可能的话,只选择日期并将其与PHP中的某些内容进行比较通常会比复杂的MySQL侧计算快得多。
我建议你:
- 用PHP准备一个所有可能日期的列表(生成或预先定义)。将它们存储在阵列中
- 从数据库中恢复所有日期
- 删除您在MySQL中找到的先前准备的数组中的所有日期。方法依赖于MySQL中的数据,但最快的应该是运行foreach over MySQL记录