@accountnujen

Как получить записи по диапазону дат, если есть только начало и конец?

Есть таблица с номерами
+-----+--------+
| id  | price  |
+-----+--------+
| 1   | 500    |
| 2   | 500    |
| 3   | 700    |
| 4   | 1000   |
+-----+--------+

и таблица с забронированными номерами
+-----+---------+----------+-------------+-------------+----------+--------+
| id  | person  | room_id  | start       | end         | s_time  | e_time  | 
+-----+---------+----------+-------------+-------------+---------+---------+
| 1   | Ivan    | 1        | 2022-03-01  | 2022-03-04  | 1       | 1       |
| 2   | Eva     | 1        | 2022-03-05  | 2022-03-06  | 1       | 0       |
| 3   | Maria   | 2        | 2022-03-01  | 2022-03-04  | 1       | 0       |
| 4   | Peter   | 3        | 2022-03-01  | 2022-03-02  | 1       | 0       |
| 5   | Max     | 3        | 2022-03-06  | 2022-03-07  | 1       | 1       |  
| 6   | Bob     | 4        | 2022-03-06  | 2022-03-07  | 0       | 0       | 
+-----+---------+----------+-------------+-------------+----------+--------+

s_time и e_time - это время заезда и выезда, где 0 - это до полудня, а 1 - после полудня. К примеру в записи id=5 стоит s_time 1 и e_time 1, значит заезд после полудня и выезд после полудня.

Мне нужно узнать, какие номера свободны с 4 по 6 число с заездом после полудня и выездом до полудня. Для этого я хочу получить в начале все номера, которые заняты в этот промежуток, а затем получить все номера, кроме тех, что заняты.

По факту id с занятыми номерами с 4 по 6 число - это id1, id2 и id6, потому что в id1 выезд ПП, в id2 пятого числа занято, а в id6 заезд ДП.

Подскажите пожалуйста, как получить эти id?

spoiler
Спрошу сразу наперёд, можно ли получить всех за исключением определённых? Я получаю id1,2 и 6, у них room_id - это два раза 1 и 4. Можно ли получить все комнаты, за исключением 1 и 4? То есть 2 и 3
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы