不在,在声明中不起作用(预订)

Posted

技术标签:

【中文标题】不在,在声明中不起作用(预订)【英文标题】: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)... 这将排除为任何部分预订的房间> 您要查询的范围。 【参考方案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));

【讨论】:

以上是关于不在,在声明中不起作用(预订)的主要内容,如果未能解决你的问题,请参考以下文章

DISTINCT声明在Doctrine中不起作用

为啥这个切换按钮在颤振 - 飞镖中不起作用?

GameCenter 挑战在 Sandbox 中不起作用?

CocoaPods 在 macOS High Sierra 中不起作用

为啥 button.click() 在我的脚本中不起作用?

为啥“deleteBlocks”在 phpWord 中不起作用?