Допустим, у меня есть таблица hotel_rooms, каждая из которых содержит несколько связанных записей о бронировании.
Таблицы будут выглядеть следующим образом:
hotel_rooms:
hotel_room_id | hotel_name
--------------------------
1 | Hotel A
2 | Hotel B
3 | Hotel C
бронирования:
reservation_id | hotel_room_id | start_date | end_date
------------------------------------------------------------
1 | 1 | 1 June 2011 | 10 June 2011
2 | 1 | 20 June 2011 | 30 June 2011
3 | 2 | 11 June 2011 | 15 June 2011
4 | 3 | 1 June 2011 | 4 June 2011
Как найти все hotel_rooms с checkin_date и checkout_date, которые не совпадают ни с одним избронирование hotel_rooms?
Например, если checkin_date был 4 июня 2011 года, а checkout_date был 8 июня 2011 года, тогда Hotel A и Hotel C не будут отображаться в результатах, только Hotel B. Если checkin_dateбыло 16 июня 2011 года, а checkout_date - 19 июня 2011 года, все три отеля должны были появиться.
Я уверен, что есть несколько способов сделать это, но для нашей ситуации, скажем, есть многоЗаписи в hotel_rooms и каждой комнате связаны со многими записями бронирования.Какой эффективный способ справиться с этим поиском?
В своих целях я использую MySQL и PHP (но мне не обязательно нужно решение, отвечающее какому-либо из них).