如果start_date和end_date位于start_date和end_date php mysql之间,请停止在tabe中插入记录

时间:2015-06-24 10:31:19

标签: php mysql database pdo mysqli

我有一个表格,其中任务分配给具有开始日期和结束日期的用户。我想做的是检查一个用户是否可以进行他被分配的任务。平均检查是他们在给定日期之间分配给他的任何任务。如果是,则限制用户添加记录。

例如,如果为用户分配了start_date is 23-06-2015 end_date is 23-08-2015.的任务,那么当我添加日期介于start_date和end_date之间的新任务时,它应返回带有以下查询的记录。它适用于某些记录,但对于start_date 23-06-2015end_date 23-06-2015这样的输入,它无效。

如果找到记录然后返回记录

,这是我的查询可用性查询
SELECT t.*
FROM task t
INNER JOIN project p ON p.id = t.pid
INNER JOIN USER u ON u.uid = t.uid
INNER JOIN STATUS st ON st.id = t.id
WHERE t.uid = 6 AND (t.start_date BETWEEN  '2015-06-23' AND '2015-08-23'  OR t.end_date BETWEEN '2015-06-23' AND '2015-08-23') AND t.pid IN (
SELECT id
FROM project) AND st.status = 0 AND t.etype='task'

1 个答案:

答案 0 :(得分:0)

我认为您正在检查特定用户的可用性(由代码t.uid=6猜测),如果是,那么精炼查询应该是:

SELECT t.* FROM task t INNER JOIN project p ON p.id = t.pid
   INNER JOIN STATUS st ON st.id = t.id WHERE t.uid = 6 AND st.status=0 
   AND (t.start_date BETWEEN '2015-06-23' AND '2015-08-23' OR 
   t.end_date BETWEEN '2015-06-23' AND '2015-08-23') AND t.etype='task';

我只是删除了查询中的一些冗余。并且它应该工作,意味着它将返回记录(已经分配的任务到user-id-6),如果project表中的任务存在状态= 0,taskType ='任务'并与输入日期冲突。