0

staff_id、、、のフィールドを持つテーブルがありleave_applied_fromますleave_applied_to

+----------+--------------+------------+
| staff_id | applied_from | applied_to |
+----------+--------------+------------+
|     1    | 2012-06-21   | 2012-06-21 |
|     2    | 2012-06-21   | 2012-06-23 |
+----------+--------------+------------+

したがって、要件は、staff_id1が日付を入力しようとすると2012-06-21、入力を許可しないようにする必要があります。staff_id2が日付を入力しようとすると2012-06-22、スタッフが入力を許可しないようにする必要があります。

PHP側でエラーを表示する方法は知っていますが、データベースに日付がDBにあるかどうかを確認する方法がわかりません。また、1つのMySQLクエリで両方のフィールドを確認する方法もわかりません。

クエリは最初にstaff_idをチェックし、次に他の両方のフィールド(applied_from、applied_to)をチェックする必要があります。スタッフがすでに同じ日付範囲に入っている場合は、エラーが発生するはずです。

4

2 に答える 2

1

以下をお試しください:

SELECT * from tbl where (applied_from =< @inputdate AND applied_to >= @inputdate) 
AND staff_id=@inputid

If the query returns record, that means the key in date is within range and you could prompt error.

于 2012-06-25T05:57:38.380 に答える
0
select case when curdate() < applied_from or curdate() > applied_to
            then 1
            else 0
            end as is_staff_id_ok
from your_table
where staff_id = 1
于 2012-06-25T05:56:22.057 に答える