Есть 3 стола: здания, номера, бронирования.
1 здание = n номеров
1 комната = n забронированных номеров
ТАБЛИЦЫ - ID (int), name (varchar)
ТАБЛИЦЫ - ID (int), building_id strong> (int)
БРОНИРОВАНИЕ ТАБЛИЦ - ID (int), room_id (int), date_start (datetime), date_end (дата и время)
Пример таблицы зданий
<pre>
ID name
1 Building A
2 Building B
3 Building C
</pre>
Пример таблицы комнат
<pre>
ID building_id
1 1
2 1
3 2
4 3
</pre>
Пример таблицы бронирования
<pre>
ID room_id date_start date_end
1 1 2014-08-09 14:00:00 2014-08-09 14:30:00
2 1 2014-08-09 14:30:00 2014-08-09 15:30:00
3 3 2014-08-09 16:30:00 2014-08-09 17:30:00
4 2 2014-08-09 16:00:00 2014-08-09 17:00:00
5 3 2014-08-09 16:00:00 2014-08-09 16:30:00
</pre>
Вопрос
Как отфильтровать все здания, в которых есть хотя бы 1 комната на определенную дату и время?
Например, мы хотим отфильтровать все здания, в которых есть хотя бы 1 доступная комната с 16:00:00 до 09.08.2014 17:00:00. В этом случае будет показано, что доступны здание A И здание C. В корпусе A есть 1 свободная комната, а в корпусе B также 1 свободная комната, поскольку в этой комнате нет бронирования.
Может ли кто-нибудь помочь мне в этом? Я просто не могу разобраться с одним запросом MySQL, чтобы получить все здания. Спасибо.