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',它仍然顯示錯誤的結果。另外,我將住宿房間連接到了子查詢中的預訂房間'......加入了預訂房間,並且再次顯示錯誤的結果。 –