当前位置: 首页 > 面试题库 >

订房SQL查询

雍河
2023-03-14
问题内容

我在编写sql以从表中获取可用房间时遇到问题。我的表结构如下。

表:预订

booking_id    |    room_id   |    start_datetime  |   end_datetime    |   customer_id
-------------------------------------------------------------------------------------
001           |     1        |  12-09-2012 2:35pm | 14-09-2012 9:00am |    23
002           |     2        | 10-09-2012 1:00am  | 20-09-2012 9:00am |    20
003           |     4        |  09-09-2012 1:35pm | 21-09-2012 9:00am |    43
004           |     1        |  22-09-2012 2:35pm | 24-09-2012 9:00am |    9
005           |     3        |  12-09-2012 9:00am | 13-09-2012 9:00am |    53
006           |     6        |  15-09-2012 9:00am | 19-09-2012 9:00am |    27

桌子:房间

包含有关房间的详细信息,该表的主键是room_id,它具有1至10个房间,共10个房间。

我的问题是我想知道这些房间在2012年9月14日6:00 pm至21-09-2012 9:00
am之间可用,这意味着我应该只将room_id的结果作为1,3,5,7,8 ,9,10。

有人可以帮我编写SQL来从上述表结构中获取可用的房间吗?我正在使用mysql作为数据库引擎。提前致谢。


问题答案:

这应该做到; 如果某个预订没有在 我们想要的预订 之前结束或之后开始 ,则该房间被视为忙碌。

SELECT r.room_id
FROM rooms r
WHERE r.room_id NOT IN (
    SELECT b.room_id FROM bookings b
    WHERE NOT (b.end_datetime   < '2012-09-14T18:00'
               OR
               b.start_datetime > '2012-09-21T09:00'))
ORDER BY r.room_id;

SQLFiddle在这里。



 类似资料:
  • 问题内容: 我在编写sql从表中获取可用空间时遇到问题。 我的表结构如下。 一个房间可以链接到许多预订,一个预订可以包含很多房间 我已经尝试过了,但是如果一个房间在两个不同的日期链接到两个不同的预订会比较麻烦,那么只有第一个预订ID才能进行比较 有人可以帮我编写SQL,以便在入住和退房之间获得可用的房间。 问题答案: 如果您想要的只是在所需日期的整个范围内可用的房间列表,那么类似以下的方法可能会起

  • 我正在将一个应用程序从普通的迁移到使用,我遇到的一个问题是,有几个查询具有用户可配置的order by语句,这意味着它们可以更改查看列表顺序的方式。 房间里似乎不允许动态order by语句,所以我必须针对每个order by语句进行单独的查询。 有没有人找到更好的方法来解决这个问题,这样我就可以有一个查询语句,其中唯一需要改变的是order by子句,而不是必须编写15个基本相同的额外查询语句?

  • 问题内容: 我有PostgreSQL数据库,我尝试打印所有用户(人)。 当我执行此查询时 我得到所有车主按汽车数量排序 输出: 当我尝试链接所有者ID时,所有订单都出错了。 输出:和其他数据 你看比命令是错误的。所以这是我的问题,我该如何保存该订单? 问题答案: 解开混乱。先汇总,然后再加入: 无需加入两次。如果您计数 最多或所有行, 这应该是最快的。 对于 较小的选择 , 相关子查询 更快: 至

  • 问题内容: 我从查询中返回了要按最佳匹配顺序进行排序的结果列表。我会尽我所能地保持清晰,但是如果某些事情还不够清晰,请告诉我,我将尝试使其更加清晰。 用户已经输入了名为的设置列表。有了这些,我正在寻找产品。一切顺利,直到他应该挑选出最佳比赛。 有几个字段,例如。 我要订购。例如,他需要先订购带有的产品,然后再订购。您可以使用来做到这一点,但是我希望不安静匹配的结果也只显示在列表的底部。因此,基本上

  • 问题内容: 我有一个酒店预订系统的查询,当有特定房间时,我需要查找日期。(这是一家精品酒店,人们在其中预订特定的房间,因此在获得此代码之前,他们知道他们想要的确切房间。 我要查找的结果是一个房间的详细信息,我在查询中指定了一个房间-我是不查找多个房间的信息。 ) “可用性”表模式很简单,每一行是: 因此,例如,如果某个房间在1月1日至1月5日期间被占用,则将五行添加到可用性表中,每一天占据该房间。

  • 问题内容: 任何人都可以发布SQL查询来计算每天的总订单数吗? 以下是这些列及其在我的数据库中的数据。 例如,2009年2月有2个订单 我需要一个SQL查询,该查询将计算并显示每天的总金额。 因此,对于2009年2月3日,总计为699.98 我需要在图表中显示每天的总订单金额 如果使用PHP会更容易做到,那么也要提一下它。 更新: 我想澄清一下,我需要本月的每日总金额。我在最初的问题中忘记提及这一