检查只有一张桌子的可用时间?

加布里埃拉·马里尼奥(Gabriela Marinho)

我只有一张桌子,上面有一份预订清单。每个保留都有一个ID(主键) a roomNumber、 astartTime和 an endTime

我试图找出在特定时间范围内有哪些房间可用。因此,如果我想查看 5 到 7 点之间是否有免费房间,我会搜索桌子并找到当时没有预订的任何房间。

起初我以为我可以这样做:

SELECT DISTINCT roomNumber
FROM  `reservations` A
WHERE NOT 
EXISTS (

SELECT NULL 
FROM  `reservations` B
WHERE A.roomNumber = B.roomNumber
AND (
B.starttime >  '5:00:00'
AND B.starttime <  '7:00:00'
)
OR (
B.endtime >  '5:00:00'
AND B.endtime <  '7:00:00'
)
)

但我很快意识到为什么这不起作用。由于所有预订都在同一个表中,如果它找到时间不冲突的行,它将返回房间号。这意味着,如果4号房间在5-7保留,而4号房间在3-4保留,则我的查询仍将返回4号房间,因为3-4行在技术上会根据我的情况得出True。

我无法修改表格,我不知道该怎么做,因为我从未遇到过这样的事情。

frederick99

尝试将您的条件更改为这些。

SELECT DISTINCT roomNumber
FROM  `reservations` A
WHERE NOT 
EXISTS (

SELECT NULL 
FROM  `reservations` B
WHERE A.court = B.court
AND (
B.starttime <  '7:00:00'
AND B.endtime >  '5:00:00'
)
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章