Я делаю систему управления отелем. Мне нужна ваша помощь с соответствующим заявлением для выполнения. Не могли бы вы взглянуть?
Это все room_types = 3, их даты заезда и выезда
Если я сделаю запрос «ВЫБЕРИТЕ * из комнат, ГДЕ room_type = 3 И check_in_date МЕЖДУ «2021-02-12» И «2021-02-13»», это то, что он возвращает
возвращает только одну комнату
но МЕЖДУ «2021-02-12» И «2021-02-13» в доме будет 5 комнат с room_type = 3. Как написать запрос, который его возвращает?
Потому что все эти 4 комнаты с типом = 3 будут в доме МЕЖДУ '2021-02-12' И '2021-02-13'
Я использую MariaDB с синтаксисом ORACLE.
Спасибо!
См. meta.stackoverflow.com/questions/333952/…
@GordonLinoff предполагает, что это dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_oracle (который устарел и удален в mysql 8)
В MariaDB 10.3 и более поздних версиях установка для системной переменной sql_mode значения Oracle позволяет серверу понимать подмножество языка Oracle PL/SQL. Например: SET SQL_MODE='ORACLE';
извините, неправильно понял это как mysql
Я подозреваю, что вы хотите, чтобы диапазон дат перекрывался:
select *
from rooms
where room_type = 3
and check_in_date <= '2021-02-13'
and check_out_date >= '2021-02-12'
Это приводит к тому, что забронированные номера перекрывают заданный диапазон.
Большое вам спасибо. Это то, что мне было нужно!
На вашем первом скриншоте я вижу только одну комнату с датой заезда между 12 и 13 числами. Эта комната возвращается в результате на втором снимке экрана. На мой взгляд, эта строка является ожидаемым результатом для указанных вами критериев.
Может быть, как предлагает GMB, вы хотите учитывать как дату заезда, так и дату выезда?
Карл
Но общее количество комнат за указанный период времени = 4. Мне нужен был скрипт, который их возвращает. Спасибо, хотя GMB решил проблему.
«MariaDB с синтаксисом Oracle» не имеет смысла. Просьба уточнить.