2016-11-14 4 views
0
$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"; 

私は彼らの最初の日にdayoffを持たないユーザーが表示されるはずですしたい私はすべきではない、バックエンドでfirstdayを確認したい、2日目にはオフになっている玉葉。しかし、私が見せたいのは2日目のことです。バックエンドで、1日目に休みを取るべきでないことをチェックしたいだけです。選択するユーザーは、シフトがオフ

+0

'date_start'の形式は何ですか? –

+0

YYYY-MM-DD それはうまく動作します。最初の日のシフトを確認したいのですが、その日は休憩ではなく、それ以外の場合はユーザーを表示しないでください。 – SMT

+0

私の日付フィールドには何の問題もありません。私は最初の日がオフではない誰にも2日目のユーザーだけを見せてほしい。 – SMT

答えて

0

subqueryを使用して、ユーザーのIDを選択できます。サブクエリは、次のとおりです。

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'; 

P.S.クエリはテストされません。

+0

'select id'というあなたとは何の関係がないのかを明確にすることで、より精巧な問題を説明することをお勧めします。 2日目に結果が表示されるのは混乱していますか? 1日目はデイオフの場合はチェックポイントなので2日目が欲しいとは思わないので、2日目が欲しい。 – SMT

+0

はいuserid申し訳ありません! – Jagrati

+0

あなたの提案はうまく見えます:)私はこれを試して、あなたに戻ってきます:)ありがとう – SMT

関連する問題