加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 查询空置时间MYSQL

发布时间:2020-12-13 17:50:59 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 mysql query room availability2个 希望在制定MYSQL查询时获得一些逻辑帮助,该查询获得的结果不在表的数据范围内. 我有一个名为schedule的表,其中包含数据类型为’time’的列,用于指示此特定计划何时开始和结束,以及从将在其中进行计划的表’ro
参见英文答案 > mysql query room availability2个
希望在制定MYSQL查询时获得一些逻辑帮助,该查询获得的结果不在表的数据范围内.

我有一个名为schedule的表,其中包含数据类型为’time’的列,用于指示此特定计划何时开始和结束,以及从将在其中进行计划的表’rooms’引用的外键.在其搜索功能的PHP代码中,我想添加一个功能,显示当前没有被时间表占用或空置的房间的结果.我添加了一个jquery滑块来专门获取搜索者想要的开始时间和结束时间.

TABLE 'schedule'
   room        sched_start      sched_end
     1           09:00:00       10:00:00
     1           11:00:00       12:00:00
     2           07:30:00       08:30:00
     2           11:30:00       13:00:00

例如,搜索者想要从10:00:00到11:00:00搜索空房间.根据数据库,结果应显示搜索结果中应显示房间1和房间2,因为两个房间都不会在搜索者的指定时间内被占用.我想按时间顺序比较所有类似房间的时间表,第一行或第一个时间表的’sched_end’和后续行的sched_start或时间表等,以确定是否有空闲时间之间.谁可以帮我这个事?

所有的帮助和讨厌都会非常受欢迎,因为我可以在MySQL中使用尽可能多的菜鸟.

DROP TABLE IF EXISTS schedule;

CREATE TABLE schedule
(room        INT NOT NULL,schedule_start      TIME NOT NULL,schedule_end TIME NOT NULL,PRIMARY KEY(room,schedule_start)
);

INSERT INTO schedule VALUES
(1,'09:00:00','10:00:00'),(1,'11:00:00','12:00:00'),(2,'07:30:00','08:30:00'),'11:30:00','13:00:00'),(3,'09:30:00','10:30:00'),(4,'10:30:00','10:45:00');

SET @start:= '10:00:00';
SET @end:= '11:00:00';

SELECT DISTINCT x.room
        -- or whatever columns you want from whichever table you want 
           FROM schedule x 
           LEFT 
           JOIN schedule y 
             ON y.room = x.room 
            AND y.schedule_start < @end 
            AND y.schedule_end > @start 
        -- other tables can join in here
          WHERE y.room IS NULL;
+------+
| room |
+------+
|    1 |
|    2 |
+------+

http://sqlfiddle.com/#!9/1b677/1

只是为了证明@ M0rtiis的解决方案是错误的……

SELECT DISTINCT room
           FROM schedule
          WHERE @end <= schedule_start
             OR @start >= schedule_end;
+------+
| room |
+------+
|    1 |
|    2 |
|    3 |
+------+

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读