Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在请求中,oracle指定在30分钟内指定增量(人员可以前来更改)_Sql_Oracle_Select - Fatal编程技术网

Sql 在请求中,oracle指定在30分钟内指定增量(人员可以前来更改)

Sql 在请求中,oracle指定在30分钟内指定增量(人员可以前来更改),sql,oracle,select,Sql,Oracle,Select,我的要求是甲骨文,它运行良好,没有问题 我在API中使用它来检查卡的状态(允许访问,不允许访问)。但是请求中有一个问题 我检查卡片上的活动和工作时间表。但我仍然需要考虑30分钟的时间差,在计划之前和之后(这样员工可以早点来,晚点离开)。30但是我对00:00到23:59的日程安排有点问题 问题是,该查询在23:30到00:29之间不执行此计划。只有这样才有可能通过。我将感谢你的帮助 带注释的选择(这是一个delta为30分钟的选择)最后一个选择是专为工作计划选择的(但我在此表单中不需要它) 您使

我的要求是甲骨文,它运行良好,没有问题

我在API中使用它来检查卡的状态(允许访问,不允许访问)。但是请求中有一个问题

我检查卡片上的活动和工作时间表。但我仍然需要考虑30分钟的时间差,在计划之前和之后(这样员工可以早点来,晚点离开)。30但是我对00:00到23:59的日程安排有点问题

问题是,该查询在23:30到00:29之间不执行此计划。只有这样才有可能通过。我将感谢你的帮助

带注释的选择(这是一个delta为30分钟的选择)最后一个选择是专为工作计划选择的(但我在此表单中不需要它)


您使用的是MySQL还是Oracle?WHERE子句中的
b.del='false'
条件使左连接返回常规的内部连接结果。将条件移动到ON子句以获得true LEFT JOIN结果。@jarlh oracle)但我认为查询应该类似)@jarlh我根据您的建议更改了请求示例数据和所需结果将非常有用。我可能还建议您简化查询——它似乎比问题所暗示的要复杂得多。
 select a.status
  from EM_STATUS_CARD a
     left join EM_CARD b on  a.ID_CARD = b.ID_CARD and  b.del = 'false'
     left join EM_CARD_ZONE v on  a.ID_CARD = v.ID_CARD
     left join EM_EMPLOYEE m on  a.EMPLOYEE_ID = m.guid
     left join EM__WORK_SCHEDULE p on  m.SCHEDULE_ID = p.guid
     INNER JOIN(
                  select MAX(l.id) id, l.ID_CARD
                  from EM_STATUS_CARD l
                  GROUP BY l.ID_CARD
                  ) t
                  on t.id = a.id   AND t.ID_CARD = a.ID_CARD
  where
        a.ID_CARD = '0000003995E0' 
     -- and TO_CHAR (sysdate, 'HH24:MI' ) between  to_char((to_date(p.FROMS, 'HH24:MI') - (1/24/60) * 30), 'HH24:MI ')   and  to_char((to_date(p.tos, 'HH24:MI') + (1/24/60) * 30) , 'HH24:MI')
     and TO_CHAR (sysdate, 'HH24:MI' ) between  p.FROMS and p.tos