Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/12/2011, 02:26
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Sistema de reserva

A ver mi propuesta era sobre tu diseño en el que no nos has dicho en ningun momento que tengas la tabla reservas.

Por lo que nos has mostrado tienias una tabla cabanias y otra complejos, mis consultas solo llaman esas tablas....

Luego te sugeri que el dieño no era optimo que necesitavas la tabla reservas.... en ese caso solo tienes que substituir cabanias por reservas en las subconsultas ...


En cuanto a tu query creo que deberias leer un poco del manual

Cita:
SELECT Idcabania FROM cabanias WHERE true
NOT IN
SELECT Idcabania From ocupadas WHERE fecha_inicio <= "'.$fecha1.'" and fecha_final >="'.$fecha2.'"

traduciendo esa consulta intenta seleccionar cabañas donde verdadero no este en la lista de cabañas ocupadas....


Código MySQL:
Ver original
  1. SELECT Idcabania
  2. FROM cabanias
  3. WHERE Idcabania NOT IN (SELECT Idcabania
  4.                           From ocupadas
  5.                           WHERE fecha_inicio <= "'.$fecha1.'"
  6.                           and fecha_final >="'.$fecha2.'");

así si funcionará... pero el diseño con una tabla de cabañas ocupadas* es peor que el anterior... lo siento.

* Ocupadas en función de que?


Código MySQL:
Ver original
  1. FROM cabanias,complejos
  2. WHERE idCabania NOT IN (SELECT idCabania
  3. FROM reservas
  4. WHERE fecha_inicio<='$fecha1' AND fecha_final>='$fecha1'
  5. SELECT idCabania
  6. FROM reservas
  7. WHERE fecha_inicio<='$fecha2' AND fecha_final>='$fecha2'
  8. SELECT idCabania
  9. FROM reservas
  10. WHERE fecha_inicio>='$fecha1' AND fecha_final<='$fecha2')




Código MySQL:
Ver original
  1. FROM cabanias,complejos
  2. WHERE idCabania NOT IN (SELECT idCabania
  3. FROM reservas
  4. WHERE (fecha_inicio<='$fecha1' AND fecha_final>='$fecha1')
  5. OR (fecha_inicio<='$fecha2' AND fecha_final>='$fecha2')
  6. OR (fecha_inicio>='$fecha1' AND fecha_final<='$fecha2'))

Una alternativa.... ya con reservas..... reuerda los parentesis no se ponen por estetica ni para que se pueda leer mas facil....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 27/12/2011 a las 02:38