2017-03-23 19 views
-1

I以下の問題があります。同時に問合せは、日付を入力し

例えばユーザは、例えば29/04/201702/05/2017(オフィスに日付リターン)を終了するために三日間の従業員の休暇期間が開始すると入力した場合 を従業員が休暇をリクエストした場合、Empvacationテーブルに既に休暇が格納されています(フィールドStartdate 01/05/2017 &フィールドEndDate 04/05/2017
入力した休暇を取得するクエリが干渉します。格納されたものの前に使用されました 私は以下を試して、うまく動作します

このクエリは

28/04/2017 to 02/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

29/04/2017 to 03/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

01/05/2017 to 02/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

02/05/2017 to 04/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

01/05/2017 to 03/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

01/05/2017 to 04/05/2017 query shows the date used (01/05/2017 to 04/05/2014) 

のような任意の使用日数 と非常によく動作しますが、ユーザーが2017年3月5日

クエリに

2017年2月5日のような日付を入力すると、何も表示せず、休暇は受け入れられます。実際に許可されていない従業員は、すでに休暇中です。

私が使用するクエリ

SELECT TblEmpVacation.*, TblVacations.VacationName, tblEmployees.Emp_Name, TblEmpVacation.DateStart, TblEmpVacation.DateEnd 
FROM tblEmployees INNER JOIN (TblVacations INNER JOIN TblEmpVacation ON TblVacations.VacationCode = TblEmpVacation.VacationNO) ON tblEmployees.Emp_ID = TblEmpVacation.EmpNo 
WHERE tblEmployees.Emp_Name="Khaled Eissa" AND TblEmpVacation.DateStart Between 5/2/2017 And 5/3/2017 AND TblEmpVacation.DateStart<>5/2/2017 
UNION 
SELECT TblEmpVacation.*, TblVacations.VacationName, tblEmployees.Emp_Name, TblEmpVacation.DateStart, TblEmpVacation.DateEnd 
FROM tblEmployees INNER JOIN (TblVacations INNER JOIN TblEmpVacation ON TblVacations.VacationCode = TblEmpVacation.VacationNO) ON tblEmployees.Emp_ID = TblEmpVacation.EmpNo 
WHERE tblEmployees.Emp_Name="Khaled Eissa" AND TblEmpVacation.DateEnd Between 5/2/2017 And 5/3/2017 AND TblEmpVacation.DateEnd<>5/3/2017 

任意のヘルプここ

enter image description here

+0

あなたの質問が何であるか全く分かりません。あなたの質問は何ですか? – Hogan

+0

'to_char'メソッドを使って文字列を' WHERE'節で日付に変換する必要があるかもしれないと思います。 – Pons

+0

編集した質問を見て、テーブルを見てください –

答えて

0

は、私はすべての日付は、上記のクエリによって捕獲することができますので、いずれかが同じ問題

に直面するかもしれません念のためにしなければならなかったものです dateend

上記のクエリを実行した後で、次excuteする:

そう君たちは非常に事前照会が

おかげで行うことができます持っていない限り、私がしなければならなかったものです

SELECT TblEmpVacation.*, TblVacations.VacationName, tblEmployees.Emp_Name, TblEmpVacation.DateStart, TblEmpVacation.DateEnd 
FROM (tblEmployees INNER JOIN TblEmpVacation ON tblEmployees.Emp_ID = TblEmpVacation.EmpNo) INNER JOIN TblVacations ON TblEmpVacation.VacationNO = TblVacations.VacationCode 
WHERE (((tblEmployees.Emp_Name)="Khaled Eissa") AND ((TblEmpVacation.DateStart)<#5/2/2017#) AND ((TblEmpVacation.DateEnd)>#5/3/2017#)); 

任意の方法

関連する問題