选择在第2天轮班的用户,我想检查后端不应该关闭的第一天


Selecting users whos shifts are off on 2nd day, i want to check the firstday at backend which should not be off

$first_day = $_POST['day1'];
$second_day = $_POST['day2'];
$sql = "SELECT * FROM users_shift WHERE userid!='$_SESSION[userid]' AND grp='$user_group' AND date_start = '$second_day' AND shift='Dayoff' ORDER BY name ASC";

我希望那些在第一天没有休假的用户应该出现。但我想展示的结果是第二天。只是想检查后端用户不应该有休息日在他们的第一天。

您可以使用选择用户id的subquery。子查询是:

select userid from users_shift where userid!='$_SESSION[userid]' AND grp='$user_group' and date_start = '$first_day' AND shift!='Dayoff' 

完整查询为:

$first_day = $_POST['day1'];
$second_day = $_POST['day2'];
$sql = "SELECT * FROM users_shift WHERE userid!='$_SESSION[userid]' AND grp='$user_group' AND date_start = '$second_day' AND shift='Dayoff' and userid in(select userid from users_shift where userid!='$_SESSION[userid]' AND grp='$user_group' and date_start = '$first_day' AND shift!='Dayoff') ORDER BY name ASC";

或者您可以使用inner join like this:

select * from users_shift s 
inner join users_shift f 
on s.userid = f.userid where 
where s.userid!='$_SESSION[userid]' AND s.grp='$user_group' And
s.date_start = '$first_day' AND s.shift!='Dayoff' And f.date_start = 
'$second_day' And f.shift = 'Dayoff';

注:未测试查询