consulta do sistema de reservas SQL: identifique quando um quarto específico está disponível
Tenho uma consulta para um sistema de reservas de hotéis e preciso encontrar datas em que um quarto específico esteja disponível. (É um hotel boutique em que as pessoas reservam quartos específicos, para que saibam exatamente o quarto que desejam antes de chegarem a esse código. O resultado que eu procuro é o detalhe de UMA sala, a que eu especifico na consulta - não estou procurando informações sobre várias sala)
O esquema da tabela 'disponibilidade' é simples, cada linha é:
room_id
date_occupied - a single day that is occupied (like '2011-01-01')
Portanto, se, por exemplo, uma sala estiver ocupada de 1 a 5 de janeiro, cinco linhas serão adicionadas à tabela de disponibilidade, uma para cada dia em que a sala estiver ocupad
Aqui está o que estou tentando descobrir:
a consulta para descobrir quando uma sala específica está disponível entre as datas de início e término, como:SELECT rooms.* FROM rooms, availability
WHERE rooms.id = 123
AND availability.room_id = rooms.id
AND nothing between start_date and end_date is in availability.date_occupied
Também estou procurando uma consulta semelhante, onde só quero ver se uma sala específica está disponível para a data de início e os dois dias seguintes, algo como:SELECT rooms.* FROM rooms, availability
WHERE rooms.id = 123
AND availability.room_id = rooms.id
AND start_date, start_date+1day and start_date+2days is not in availability.date_occupied
Estou um pouco preso tentando descobrir as junções exatas. Alguma sugestão? Observe que, se ajudar, estou totalmente aberto a um esquema diferente para a tabela de disponibilidade. O que quer que faça com que as consultas funcionem com mais eficiênci