我正在开发一个模块,系统可以确定灵活时间表的日志属于哪个模块......
这就是我想要做的。我有一个名为office_schedule的表,其中包含字段和值:
emp_ID time_in time_out
1 8:00:00 9:00:00
1 9:30:00 12:00:00
1 13:30:00 17:00:00
示例表上方'office_schedule'包含单个员工在一天内的日程安排值。鉴于我有另一个名为'office_logs'的表,其值为:
emp_ID log_in log_out
1 8:40:00 11:30:00
我搜索一个查询,该查询将获取员工的日志并尝试通过计算日志所涵盖的最大值来确定日志所属的'office_schedule'表中的值。
例如,如果我使用'office logs'表中的日志查询,它将匹配'office_schedule'表的第二个值,因为日志在'office_schedule'表的第二个值中覆盖的时间比其他值多
我希望这是可以理解的。 请帮忙......
答案 0 :(得分:1)
假设时间单元被定义为TIME而不是VARCHAR,我会尝试类似的东西(但也许有更好的方法):
SELECT * FROM `office_logs` as log LEFT JOIN `office_schedule` AS sched ON log.`emp_ID` = sched.`emp_ID` WHERE log.`emp_ID` = 1 ORDER BY (ABS(sched.`Time_in` - log.`log_in`) + ABS(sched.`Time_out` - log.`log_out`)) ASC LIMIT 1;
它计算员工的登录和退出时间与其预定时间和超时之间的绝对差异。回报按最小差异排序。
也许这有帮助。