首页 > 解决方案 > (SQL Oracle) 如何为酒店预订系统连接 3 个表?

问题描述

我的 Oracle DB 中有 3 个表用于酒店网站项目。


  1. 室 room_num
    b。容量(有多少客人入住)

  2. 餐桌预订(会员
    )room_num
    b。签到日期
    c. 离开日期

  3. 餐桌预订2(非会员
    )room_num
    b。签到日期
    c. 离开日期

我想编写一个返回房间列表的查询:

  1. 大于或等于容量 X
  2. 在 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;

标签: sqloracle

解决方案


推荐阅读