Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证mysql行是否与另一行冲突_Php_Mysql_Datetime - Fatal编程技术网

Php 验证mysql行是否与另一行冲突

Php 验证mysql行是否与另一行冲突,php,mysql,datetime,Php,Mysql,Datetime,我正在为我工作的学校建立一个资源预约系统。资源仅保留40分钟,这是课程的持续时间 资源分为4类: 1-学前教育 2-小学 3-高中,一楼 4-高中二楼 时间表分为不同的时间跨度: 1-托儿所 2-学前幼儿园 3-金德 4-小学一年级-三年级 5-小学四年级-六年级 6-高中7年级-9年级 7-高中10年级及以上 有时,有一种情况,一年级到三年级的学生休息,四年级到六年级的学生在上课。休息15分钟,上课40分钟。有时,时间表上会出现冲突,如果允许用户保留资源,该资源将被另一个用户使用至少10分钟,

我正在为我工作的学校建立一个资源预约系统。资源仅保留40分钟,这是课程的持续时间

资源分为4类:

1-学前教育

2-小学

3-高中,一楼

4-高中二楼

时间表分为不同的时间跨度:

1-托儿所

2-学前幼儿园

3-金德

4-小学一年级-三年级

5-小学四年级-六年级

6-高中7年级-9年级

7-高中10年级及以上

有时,有一种情况,一年级到三年级的学生休息,四年级到六年级的学生在上课。休息15分钟,上课40分钟。有时,时间表上会出现冲突,如果允许用户保留资源,该资源将被另一个用户使用至少10分钟,这在学前、小学和高中都会发生

我的DB预约表结构如下:

我认为有两个字段可以帮助我确定预订是否会产生冲突:RESERVATIONDUEDATE和RESERVATIONEXPIREDATE,这两个字段都是datetime,都有我需要的信息。我无法想象如何进行查询以验证是否存在冲突

到目前为止,我有一个查询函数,如下所示:

     SELECT T1.SCHEDULE_START, T1.SCHEDULE_END
FROM reservation T4
JOIN schedule_intermediate T1 ON T4.SCHEDULEID_GENERATED = T1.SCHEDULEID_GENERATED
JOIN schedule_type T2 ON T1.SCHEDULE_TYPE_ID = T2.SCHEDULE_TYPE_ID
JOIN schedule T3 ON T1.SCHEDULEID = T3.SCHEDULEID
WHERE (
SELECT COUNT( * ) 
FROM reservation R
INNER JOIN schedule_intermediate SI ON R.SCHEDULEID_GENERATED = SI.SCHEDULEID_GENERATED
WHERE R.RESOURCEID =456
AND SI.SCHEDULE_TYPE_ID =4
AND R.RESERVATIONDUEDATE !=  '2014-08-06 07:35:00'
AND R.RESERVATIONEXPIREDATE !=  '2014-08-06 08:35:00'
AND(( SI.SCHEDULE_START < T1.SCHEDULE_START AND SI.SCHEDULE_END > T1.SCHEDULE_START ) 
    OR ( SI.SCHEDULE_START < T1.SCHEDULE_END AND SI.SCHEDULE_END > T1.SCHEDULE_END ))
) = 0
该查询仅用于选择可用的日程安排时段,其中RESOURCEID、SCHEDULE_TYPE_ID、“SCHEDULE_START”和“SCHEDULE_END”与查询中提供的信息不同

此时,我甚至不确定查询的结构是否正确,因为此查询的结果是:


我真正想要的是那些属性与提供的属性不同的时间段

我在想你需要什么。试试这个。。。做一个类似于你所做的搜索

WHERE R.RESOURCEID =456
AND SI.SCHEDULE_TYPE_ID =4
AND R.RESERVATIONDUEDATE >=  '2014-08-06 07:35:00'
AND R.RESERVATIONEXPIREDATE <=  '2014-08-06 08:35:00'
如果查询返回0行,则不会发生冲突

此时,您的查询返回该行,因为计划开始时间是07:50,这不等于07:35:00


此外,这是否用于定期会话,如果是的话。。您是如何以时间戳格式在数据库中管理这一点的?

这是我想知道的另一件事。为什么我没有指定一个时间表的开始时间,却把它放在7:50。查询返回0行。我需要查询做的是给我所有的计划时间,但与子查询上提供的数据冲突的时间除外。在T1.schedule\u START时将什么拉入查询中。我将开始逐行构建查询,从那里调试它的SCHEDULE\u start和'SCHEDULE\u END'是时间段。例如:07:50是课程表的开始,08:35是课程表的结束,这意味着课程的持续时间,以及课程表的最后一段时间