0
我尝试创建一个查询,该查询在签入和结帐日期之间显示可用酒店。另外,当我预订特定房间时,我将其预订列设置为1.也就是说,当结帐日期实际发生时,触发功能会将预订列设置为0.按日期搜索Mysql查询
如果所有房间酒店预订(预订= 1)和这些房间的入住结帐日期是特定日期(入住结帐输入),然后不要将该酒店列入清单。我的查询不显示我想要的结果。
查询:输入:国家(州),登记和结帐。
SELECT DISTINCT a.* FROM accommodation a INNER JOIN cb_states s ON a.state = s.id
INNER JOIN accommodation_rooms ar ON a.id = ar.accommodation
WHERE state = 1 AND a.id NOT IN
(
SELECT 1 FROM booking b
WHERE
(
(b.arrival_date BETWEEN '2017-11-16' AND '2018-03-16')
OR
(b.departure_date BETWEEN '2017-11-16' AND '2018-03-16')
)
)
当我运行查询时,它总是显示所有酒店,不管日期。如果我写... WHERE ar.booked = 0 AND state = 1 AND a.id NOT IN...
,那么它不显示住宿ID 13,但它不会显示当我更改日期。
可能是什么我的情况最好的逻辑是什么? –
@MalenaT。 。 。这有逻辑修复。 '<='而不是'between'找到*任何*重叠。 –
我明白了。谢谢,'b。? = br。??'在这里,我写了'b.id = br.booking',它仍然显示错误的结果。另外,我将住宿房间连接到了子查询中的预订房间'......加入了预订房间,并且再次显示错误的结果。 –