Ver Mensaje Individual
  #2  
Antiguo 27-05-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Reputación: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Creo que primero debes chequear que la nueva reserva no esté entre los días ocupados por la que ya hay, o sea:

Campos en la tabla reservas: codigohabitacion, fechaentrada, fechasalida

Primero, que la fechaIN no esté comrprendida entre esas fechas ya que está ocupada.
Además la fecha de salida no debe coincidir tampoco con ninguna fecha que esté ocupada la habitación, por lo tanto, en principio, se me ocurre algo como esto;
Código SQL [-]
select * 
from tbReservas
where (fechaIN <  fechaentrada or fechaIN > fechasalida)
and (fechaOUT < fechaentrada or fechaOUT > fechasalida)

Evidentemente, habrá que comprobar que fechaIN es menor que fechaOUT.

También hay que comprobar que por ejemplo la fechaIN puede ser menor que fechaentrada, pero entonces la fechaOUT no puede ser mayor que fechasalida, tendrá que ser también menor que fechaIN, "salga usted de la habitación que este fin de semana está reservada a otra persona y el lunes ya puede usted volver a ella". Como eso no se puede permitir, entonces hay que añadir al select:

Código SQL [-]
and ((fechaIN < fechaentrada)  or (fechaIN > fechasalida))

Seguro que hay otra forma más fácil

Última edición por Casimiro Noteví fecha: 27-05-2010 a las 16:54:52.
Responder Con Cita