none
Problema num query relacionado com datas RRS feed

  • Pergunta

  • 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

    sábado, 18 de agosto de 2012 19:05

Respostas

  • Problema resolvido

    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))

    OR (@dataCI < Reserva.data_chegada AND @dataCO > Reserva.data_partida) )


    • Marcado como Resposta JrcN sábado, 18 de agosto de 2012 23:21
    sábado, 18 de agosto de 2012 23:21