sql - (SQL Oracle) 如何为酒店预订系统连接 3 个表?
问题描述
我的 Oracle DB 中有 3 个表用于酒店网站项目。
表
室 room_num
b。容量(有多少客人入住)餐桌预订(会员
)room_num
b。签到日期
c. 离开日期餐桌预订2(非会员
)room_num
b。签到日期
c. 离开日期
我想编写一个返回房间列表的查询:
- 大于或等于容量 X
- 在 checkin_date Y 和 checkout_date Z 内可用
当我只使用两张桌子时,我能够找到可用的房间,ROOM
并且RESERVATION
。但是我无法将第三个表加入到我的查询中。
你能告诉我我在这里做错了什么吗?例如,3 人入住,入住日期为21/05/12
,退房日期为21/05/18
SELECT * FROM room r
WHERE r.capacity >= 3
AND r.room_num NOT IN
( SELECT b.room_num FROM reservation b WHERE NOT (b.CHECKOUT_DATE <= 21/05/12 OR b.CHECKIN_DATE >= 21/05/18))
AND ( SELECT c.room_num FROM reservation2 c WHERE NOT (c.CHECKOUT_DATE <= 21/05/12 OR c.CHECKIN_DATE >= 21/05/18) )
ORDER BY r.ROOM_NUM;
解决方案
推荐阅读
- javascript - 表单提交后使用 ajax 正确执行 POST 请求
- mysql - sequlize bulkCreate 导致的 Sql 错误。但为什么?
- lotus-notes - 来自 LotusScript 代理的运行时错误 53“找不到文件”(已解决)
- css - 同时使用 Bootstrap 3 和 Bootstrap 4
- cypress - 使用赛普拉斯自动化的 URLS 重定向
- javascript - 使用 Javascript 访问深度嵌套的对象并构建 CSV 文件
- javascript - 如何将字符串样式应用于 HtmlElement?
- antd - 可观察到的变化时如何用 mobx 更新 antd 表
- elasticsearch - 如何在每个表中插入多个表值?
- list - Xamarin 表单列表行值在重新加载数据时未更新?