【问题标题】:not in, in statement not working (booking)不在,在声明中不起作用(预订)
【发布时间】:2018-05-03 11:00:31
【问题描述】:

我很长一段时间以来一直试图进行 SQL 查询来检查酒店房间是否在两个日期之间可用,但我无法让它工作(它在 MySQL 上显示错误)。看来问题出在声明的第一部分。该语句检查不在“已预订”表中的可用房间 ID。当我执行语句的第一部分(下面的代码)它显示一个空列(没有房间 ID,只有列名)编辑:Mysql 没有更新表,这部分问题没有修复

我正在查询显示两个日期之间的可用房间

    SELECT rom_id  
FROM
seka2804_hotelbestilling.rom
where
 rom_id  not in (
                     SELECT * FROM seka2804_hotelbestilling.bestilit_rom;
);

这是整个查询

SELECT rom_id 
                    FROM seka2804_hotelbestilling.rom where romtype_id=$type-rom
                    AND rom_id  NOT IN 
                    (
                    select rom_id
                    from seka2804_hotelbestilling.bestilit_rom 
                    where (innsjekk >= @start and innsjekk < @end)
                    or (utsjekk >= @start and utsjekk < @end))

ER- 图 图片网址:https://imgur.com/a/MQxeMgX

【问题讨论】:

  • “不工作”是什么意思?你想做什么?样本数据和期望的结果会有所帮助。
  • sql query for checking if an hotel room is availeble between two dates,->select rom_id from seka2804_hotelbestilling.bestilit_rom where (innsjekk &gt;= @start and innsjekk &lt; @end) or (utsjekk &gt;= @start and utsjekk &lt; @end))
  • 在第一段代码中,在最后一个 ) 之前有一个额外的 ;。删除它,然后重试。
  • 您提供了一个无效的查询,但没有描述它意味着要做什么。据我所知,想要在两个日期之间未预订的所有房间的列表。但是您不清楚如果在您查询的日期范围的 一些 内预订了房间该怎么办。您拥有的是WHERE room NOT IN (Rooms where the CheckIn or CheckOut are in the date range)如果签入在该日期范围之前并且结帐在该日期范围之后,您不会将其过滤掉。
  • 可能想要NOT IN (SELECT room FROM boookings WHERE CheckIn &lt; @end AND CheckOut &gt; @start)... 这将排除为任何部分预订的房间> 您要查询的范围。

标签: php mysql sql html


【解决方案1】:

也许您的 date 过滤器应该来自 outer query 而不是来自 subquery

SELECT rm.rom_id  
FROM seka2804_hotelbestilling.rom rm
WHERE NOT EXISTS (SELECT 1 FROM seka2804_hotelbestilling.bestilit_rom 
                  WHERE rom_id = rm.rom_id) AND
      ((innsjekk >= @start and innsjekk < @end) OR
       (utsjekk >= @start and utsjekk < @end));

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2015-08-13
    • 2018-10-02
    • 2012-12-05
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多