gpt4 book ai didi

mysql - 如果 start_date 和 end_date 在 start_date 和 end_date 之间,则停止在 tabe 中插入记录 php mysql

转载 作者:行者123 更新时间:2023-11-30 22:41:30 24 4
gpt4 key购买 nike

我有一个表,其中任务分配给具有开始日期和结束日期的用户。我想做的是检查用户是否可以完成分配给他的任务,这意味着检查他们是否在给定日期之间分配给了他任何任务。如果是则限制用户添加记录。

例如,如果为用户分配了任务,其中 start_date 是 23-06-2015 end_date 是 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'

最佳答案

我认为您正在检查特定用户的可用性(由代码 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';

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

关于mysql - 如果 start_date 和 end_date 在 start_date 和 end_date 之间,则停止在 tabe 中插入记录 php mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31024243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com