Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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
Php 如何从数据库中获取在特定日期和时间内未分配的用户列表_Php_Mysql - Fatal编程技术网

Php 如何从数据库中获取在特定日期和时间内未分配的用户列表

Php 如何从数据库中获取在特定日期和时间内未分配的用户列表,php,mysql,Php,Mysql,我尝试了很多逻辑,但仍然没有得到准确的结果。 我有两个字段使用datetime从shift\u和shift\u到。数据库中也存在相同的字段。 现在,我必须检查哪些用途在特定的“从”和“到”期间没有分配任何班次 预期结果: 查询应返回在输入的日期和时间内未占用的用户列表 使用的表格: 用户-包含用户日期 角色\用户-确定用户的角色 角色-确定角色列表 班次-确定班次细节,如时间、日期、地点等 公司-仅识别与公司相关的用户 注意:我从一个表单中获取了来自datetime的shift_,从中获取了来自

我尝试了很多逻辑,但仍然没有得到准确的结果。 我有两个字段使用datetime从shift\u和shift\u到。数据库中也存在相同的字段。 现在,我必须检查哪些用途在特定的“从”和“到”期间没有分配任何班次

预期结果: 查询应返回在输入的日期和时间内未占用的用户列表

使用的表格:

  • 用户-包含用户日期
  • 角色\用户-确定用户的角色
  • 角色-确定角色列表
  • 班次-确定班次细节,如时间、日期、地点等
  • 公司-仅识别与公司相关的用户
  • 注意:我从一个表单中获取了来自datetime的shift_,从中获取了来自datetime的shift_

    我的努力: 我的质询如下:

    SELECT u.id,u.name FROM users as u
    left join role_user as ru on u.id=ru.user_id 
    left join roles as r on ru.role_id=r.id
    left join shift_assignment as saa on saa.user_id=u.id
    left join shifts as s on s.id=saa.shift_id 
    left join companies as c on u.company_id= c.id 
    WHERE r.name='security_officer_agents' and 
    c.id=$company_id and ((DATE('$shift_from_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_from_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to')) or (DATE('$shift_to_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_to_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to'))
    
    请在这方面帮助我。还有一种方法可以避免不在中间,因为它不考虑那天。它只是在这些日期之间进行

    移位表结构

    'id', 
    `location_id` ,   
    `duty_point_id`,    
    `contact`,    
    `phone`,   
    `shift_from`,    
    `shift_to` ,    
    `created_by` ,    
    `created_at`,     
    `updated_at`,   
     PRIMARY KEY (`id`),    
    KEY    `shifts_location_id_foreign` (`location_id`)
    

    你可以应用这样的条件

    fromtimedbfieldname < '$endtimephpvarible' 
    AND 
    totimedbfieldname > '$starttimephpvarible'
    

    我必须用这个替换什么代码。?请解释一些关于这个和工作的逻辑。关于时间延迟,你可以粘贴“shift”表的db结构吗?是的,当然可以。现在检查shift的类型是DATETIME还是DATE??
    s.shift_from < $shift_to_date
    AND
    s.shift_to > shift_from_date
    
    $shift_to_date=date("Y-m-d H:i:s",strtotime($shift_to_date))