SQL-запрос. Должен ли я перебирать определенный диапазон дат?

Я делаю систему управления отелем. Мне нужна ваша помощь с соответствующим заявлением для выполнения. Не могли бы вы взглянуть?

Это все 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.

Спасибо!

«MariaDB с синтаксисом Oracle» не имеет смысла. Просьба уточнить.

Gordon Linoff 26.12.2020 00:09

См. meta.stackoverflow.com/questions/333952/…

Strawberry 26.12.2020 00:22

@GordonLinoff предполагает, что это dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_oracle (который устарел и удален в mysql 8)

ysth 26.12.2020 00:39

В MariaDB 10.3 и более поздних версиях установка для системной переменной sql_mode значения Oracle позволяет серверу понимать подмножество языка Oracle PL/SQL. Например: SET SQL_MODE='ORACLE';

Tural 26.12.2020 15:13

извините, неправильно понял это как mysql

ysth 27.12.2020 02:57
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
5
321
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я подозреваю, что вы хотите, чтобы диапазон дат перекрывался:

select * 
from rooms 
where room_type = 3 
  and check_in_date  <= '2021-02-13'
  and check_out_date >= '2021-02-12'

Это приводит к тому, что забронированные номера перекрывают заданный диапазон.

Большое вам спасибо. Это то, что мне было нужно!

Tural 26.12.2020 00:25

На вашем первом скриншоте я вижу только одну комнату с датой заезда между 12 и 13 числами. Эта комната возвращается в результате на втором снимке экрана. На мой взгляд, эта строка является ожидаемым результатом для указанных вами критериев.

Может быть, как предлагает GMB, вы хотите учитывать как дату заезда, так и дату выезда?

Карл

Но общее количество комнат за указанный период времени = 4. Мне нужен был скрипт, который их возвращает. Спасибо, хотя GMB решил проблему.

Tural 26.12.2020 15:15

Другие вопросы по теме