【发布时间】:2017-09-03 20:11:04
【问题描述】:
我尝试创建一个查询,显示入住和退房日期之间的可用酒店。另外,当我预订特定房间时,我将他们的预订列设置为 1。这意味着,当结帐日期出现在现实生活中时,触发函数会将预订的列设置为 0。
如果酒店的所有房间都已预订(booked=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,但是当我更改日期时它也不会显示。
【问题讨论】: