Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/08/2013, 11:48
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta SQL no funciona

Cita:
Iniciado por desweb Ver Mensaje
Ok.

Esto es lo que me envia:

SQL=SELECT * FROM reservaciones WHERE fecha_entrada BETWEEN '2013-09-16' AND '2013-09-18' OR fecha_salida BETWEEN '2013-09-16' AND '2013-09-18' AND id_edificio=19 AND habitacion LIKE '%Hab2%'

Las variables me las toma correctamente
Código MySQL:
Ver original
  1. FROM reservaciones
  2. WHERE fecha_entrada BETWEEN '2013-09-16' AND '2013-09-18'
  3.     OR fecha_salida BETWEEN '2013-09-16' AND '2013-09-18'
  4. AND id_edificio=19
  5. AND habitacion LIKE '%Hab2%'
Aquí el problema, a nivel de lógica es que tienes dos grupos de condiciones:
Código SQL:
Ver original
  1. fecha_entrada BETWEEN '2013-09-16' AND '2013-09-18'
Esta es una condición.
Código MySQL:
Ver original
  1. fecha_salida BETWEEN '2013-09-16' AND '2013-09-18'
  2. AND id_edificio=19
  3. AND habitacion LIKE '%Hab2%'
Esta es otra condición.

Es así porque el OR es una disyunción lógica, y "parte" el conjunto en dos, cada una de las cuales puede ser verdad o ambas al mismo tiempo.
Ahora bien, si las condiciones de fecha deben ser una u otra, pero todo lo demás es mandatorio, entonces te faltan los paréntesis:

Código MySQL:
Ver original
  1. FROM reservaciones
  2. WHERE (fecha_entrada BETWEEN '2013-09-16' AND '2013-09-18'
  3.     OR fecha_salida BETWEEN '2013-09-16' AND '2013-09-18')
  4. AND id_edificio=19
  5. AND habitacion LIKE '%Hab2%'
Ahora bien, me hace dudar que exista una habitación que se denomine "Hab2".
¿Es así? ¿Con un "2" en el nombre?

Fuera de eso, como ya te dijo @pateketrueke, prueba esa query en phpMyadmin, y veamos si devuelve datos, y de ser así, mira si los datos son los que esperabas. si no lo son, es que tus condiciones no son correctas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)