Olá,
Estou com um pequeno problema num query para calcular o número de reservas que existem entre datas seleccionadas pelo cliente para um trabalho de gestão de reservas de um hotel.
Isto é o cliente selecciona datas de chegada e partida para reservar um quarto de hotel, e na pesquisa eu quero que apareça os quartos disponíveis entre essas datas que o cliente seleccionou.
Resolvi um pouco do problema com o between, ou seja imaginemos que na bd já existe uma reserva que vai do dia 20/08/2012 ao dia 25/08/2012, se o cliente seleccionar uma data que esteja entre estas duas datas (por exemplo: vai do dia 18/08/2012
ao dia 22/08/2012) o query conta certo. O problema está quando o cliente selecciona por exemplo do dia 18/08/2012 ao dia 30/08/2012, estas datas não estão entre 20/08/2012 e 25/08/2012, logo o query não conta, e aquilo que
eu pretendia era que contasse também.
Fica aqui o query:
SELECT COUNT(*) AS Expr1 FROM [Reserva/Quarto] INNER JOIN Quartos ON [Reserva/Quarto].id_quarto = Quartos.id_quarto
INNER JOIN Reserva ON [Reserva/Quarto].id_reserva = Reserva.id_reserva WHERE(Reserva.estado = @estado)
AND (Quartos.id_tipoquarto = @id_tipoquarto) AND( (@dataCI BETWEEN Reserva.data_chegada AND Reserva.data_partida)
OR (@dataCO BETWEEN Reserva.data_chegada AND Reserva.data_partida) )
Alguém pode ajudar?
Obrigado