Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2008, 23:40
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 10 meses
Puntos: 300
Respuesta: query pasando dos fechas a comparar aotras dos fechas

Si los datos de fecha del formulario entran en el orden adecuado año-mes-dia y lo que buscas son las habitaciones entre cuya fecha_inic y fecha_fin de la base no haya ningún día que coincida con ningún otro del rango fechainicio y fechafin que incluyes en el formulario, prueba a ver si esto puede servirte

SELECT habitacion FROM reservas WHERE habitacion NOT IN (SELECT DISTINCT habitacion from reserva where (fechainicio<= fecha_inic AND fechafin>= fecha_inic) OR (fechainicio>= fecha_inic AND fechainicio<= fecha_fin))

La idea es que el rango entre las fechas no tenga ningún punto en común, y para eso hay que evitar las fechas coincidentes. Para que haya coincidencia, si la fechainicio es anterior o igual a fecha_inic, la fechafinal, debe ser mayor o igual que la fechainicio. Y si la fechainicio es posterior a fecha_inic, la fechainicio debe ser al mismo tiempo menor que la fecha_fin para entrar en ese rango.

Es sólo una propuesta. Compruébala.