资源预订方案

时间:2015-01-19 04:51:53

标签: sql

您好我的情况如下 - :

我必须在上午10点到11点之间的特定日期预订资源,因此必须在该日期检查该特定资源是否免费。

请注意,资源已在下列时间预订。 09.00 AM至10.AM& 上午11点至下午12点

我必须查询表格是否可以在上午10点到11点预订。如果是,则返回true。

1 个答案:

答案 0 :(得分:0)

您的SQL查询需要确保没有其他预订与您尝试预订的时间间隔重叠。

如果您的预订被存储为包含独占时间段,则表格如下:

CREATE TABLE reservations ( rsrc_id INTEGER NOT NULL, dtbegin DATETIME NOT NULL, dtend DATETIME NOT NULL, booking_event_id INTEGER NOT NULL, PRIMARY KEY (rsrc_id, dtbegin, dtend) )

然后,下面的搜索需要返回一个零,以证明资源1234目前可以在2月1日上午10点到11点预订:

SELECT COUNT(*) FROM reservations WHERE rsrc_id = 1234 AND ( ( '2015-02-01 10:00:00' >= dtbegin AND '2015-02-01 10:00:00' < dtend ) OR ( '2015-02-01 11:00:00' > dtbegin AND '2015-02-01 11:00:00' <= dtend ) OR ( dtbegin >= '2015-02-01 10:00:00' AND dtend <= '2015-02-01 11:00:00' ) )