0
私はチェックインとチェックアウトの日付の間に利用可能なホテルを表示するクエリを作成しようとします。また、特定の部屋の予約をするときに、その予約列を1に設定します。つまり、チェックアウト日が実際に来ると、トリガー機能によってその予約列が0に設定されます。日付で検索クエリ
ホテルは予約され(予約= 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...
と書くと、宿舎ID13は表示されませんが、日付を変更しても表示されません。
? –
@MalenaT。 。 。これには論理的な修正があります。 'between 'の代わりに' <= 'は* any * overlapを見つけます。 –
私は参照してください。ありがとう、 'b。?? = br。?? 'ここで' b.id = br.booking'と書きましたが、それでも間違った結果が表示されます。さらに、私はサブクエリ '..... JOIN booked_rooms br ON b.id = br.booking JOIN accommodation_rooms aar on br.room = aar.id'の予約された部屋に宿泊部屋を接続しました。間違った結果が再び表示されます。 –