Ver Mensaje Individual
  #17  
Antiguo 29-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por juanma92 Ver Mensaje
Y como hago para consultar en una y luego en otra? Si en delphi desp necesito comunicar a un dbgrid? Por eso lo hacia todo en una consulta
Ah, bien, entonces creo que el problema es que hay que tener muy claro el concepto, a ver si lo he entendido: un cliente pide una habitación (o reserva) para entrar el 05.12.2012 y salir el 09.12.2012
Entonces hay que comprobar que tanto en reservadas como en ocupadas no estén entre esas fechas, bien.
Pienso que en lugar de buscar las ocupadas en esas fechas, hay que buscar las libres, por ejemplo, todas las que la fechaingreso sea mayor (¿o igual?) que la fecha salida de reservas/ocupadas serán válidas.
Y por el mismo motivo, todas las que fechasalida sea menor (¿o igual?) que fechaentrada de reservas/ocupadas también serán válidas.
Por supuesto, se supone que se controla que las fechas dadas por el cliente son correctas, fechaentrada < fechasalida

Suponemos que las fechas que ha pedido el cliente están en las variables de fecha: desdefecha, hastafecha
Código SQL [-]
select h.nrohabitacion
from habitaciones h
where h.habitacion not in (select r.idhabitacion
                           from clientereservahabitacion r
                           where r.fechasalida <= :desdefecha
                           or    r.fechaentrada >= :hastafecha)
and h.habitacion   not in (select o.idhabitacion
                           from clienteocupahabitacion o
                           where o.fechasalida <= :desdefecha
                           or    o.fechaentrada >= :hastafecha)
order by h.nrohabitacion
Creo que es eso lo que quieres.

Última edición por Casimiro Notevi fecha: 29-11-2012 a las 14:27:24.
Responder Con Cita