0

我正在开发一个模块,系统将能够确定弹性时间表的日志所属的位置......

这就是我想要做的。我有一个名为 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”表的第二个值中覆盖的时间跨度比其他值多。

我希望这是可以理解的。请帮忙...

4

1 回答 1

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;

它计算员工的登录和注销时间与其每个计划的进入和超时时间之间的绝对差异。返回按最小差异排序。

也许这有帮助。

于 2013-05-03T09:03:06.167 回答