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

需要更新mysql查询以选择日期范围以预订酒店房间或任何东西

柴赞
2023-03-14
问题内容

我的项目中有一种情况,如下所示。

在检查可用房间时

$sel_from_bookings="SELECT room_no FROM `booking` WHERE (('".$_POST['req_tdate']."' BETWEEN check_indate AND check_outdate) OR ('".$_POST['req_fdate']."' BETWEEN check_indate AND check_outdate)";

$sel_from_reserv="SELECT room_no FROM `reservation` WHERE (('".$_POST['req_tdate']."' BETWEEN check_indate AND check_outdate) OR ('".$_POST['req_fdate']."' BETWEEN check_indate AND check_outdate))";

$sel_rooms="SELECT room_no FROM rooms WHERE room_no NOT IN (".$sel_from_bookings.") AND room_no NOT IN (".$sel_from_reserv.")";

第一个查询从满足日期范围的预订表中检索房间号列表

类似地,第二个从餐桌预订上做同样的事情

最后一个查询使用上面两个查询提供的列表,并获取不在生成的列表中的房间列表。

可以在2010年10月8日/ 2010年8月15日正常工作

在20-08-2010 / 25-08-2010可以正常工作

当我给出10到15之间的日期时,它对于20到25同样有效,并且对于14-14-2010和21-08-2010也可以正常工作

但不适用于2010年6月16日至2010年8月19日

需要任何澄清,请问我。

谢谢。


问题答案:
SELECT  *
FROM    room
WHERE   room_no NOT IN
        (
        SELECT  room_no
        FROM    booking
        WHERE   check_outdate >= @req_fdate
                AND check_indate <= @red_tdate
        )
        AND room_no NOT IN
        (
        SELECT  room_no
        FROM    reservation
        WHERE   check_outdate >= @req_fdate
                AND check_indate <= @red_tdate
        )

请注意顺序或参数:@req_fdate这是这里的第一个日期( ),@req_tdate最后一个日期( 直到 )。

要检查从Aug 16到的可用性Aug 19,请使用以下命令:

SELECT  *
FROM    room
WHERE   room_no NOT IN
        (
        SELECT  room_no
        FROM    booking
        WHERE   check_outdate >= '2010-08-16'
                AND check_indate <= '2010-08-19'
        )
        AND room_no NOT IN
        (
        SELECT  room_no
        FROM    reservation
        WHERE   check_outdate >= '2010-08-16'
                AND check_indate <= '2010-08-19'
        )


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

  • 我看过很多类似的问题,但还没能让它为我所用。我正在创建一个酒店预订系统,我希望列出在请求的预订日期至少有一个房间可用的酒店。 这是我到目前为止提出的问题 我是MySQL的新手,这真的失控了。这个想法是计算酒店的房间总数,减去给定日期范围内预订的房间总数。我能得到一些帮助吗? 子查询 它自己就能很好地工作,但这个不行。

  • 问题内容: 如何从mysql表中选择过去日期到当前日期的数据?例如,选择从2009年1月1日到当前日期? 我的“ datetime”列为datetime日期类型。请帮忙,谢谢 编辑: 如果说我想从2009年1月1日开始获得每天的数据,该如何编写查询?使用计数和函数之间? 问题答案: 或使用和:

  • 问题内容: 我有一个和。我想获取这两个日期之间的日期列表。谁能帮助我指出查询中的错误。 这是一个变量。 问题答案: 您应该将这两个日期放在单引号之间,例如。 或可以使用 请记住,第一个日期是包含日期,但第二个日期是排除日期,因为它实际上是“ 2011/02/27 00:00:00”

  • 我在Delphi2010(TADOQuery)中使用ADO数据库。 目的是找到可用的房间,并显示一家小旅馆的房间价格。 房间(_R) t_typeroom t_trans 目前,我使用下面的查询来显示房间价格。 并设法显示:(在Delphi2010的ADOQuery1和DBGrid1中) 我想做的是如何显示t_trans内尚未预订或未签入的代码室?(具体日期) 也许像这样(使用运算符): 问题是如

  • 问题内容: 我有如下所示的ind Mysql可用性表: 每个房间的每个可用日期都有一行。可能存在间隙,例如,房间1可能有8月1,2,3,5,6,13,14,15的条目,隔天不可用。 我需要查询以找到room_ids列表,其中在日期范围内每天都有可用的空间。 换句话说,获取room_id列表,其中在开始日期和结束日期之间的每个日期都有每个房间的条目。 问题答案: 您想要这样的东西: 该子句将计算该时