Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Rango de fechas y consulta de disponibilidad

Estas en el tema de Rango de fechas y consulta de disponibilidad en el foro de Mysql en Foros del Web. A ver si me resuelven esta duda: Tengo 2 tablas, en una tengo los distintos PRODUCTOS y en otra las fechas en las que estos ...
  #1 (permalink)  
Antiguo 27/01/2012, 03:00
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Rango de fechas y consulta de disponibilidad

A ver si me resuelven esta duda:

Tengo 2 tablas, en una tengo los distintos PRODUCTOS y en otra las fechas en las que estos productos no están disponibles.

Tabla1

id-Producto 1
id-Producto 2
id-Producto 3

Tabla2

Id- Idproducto-fecha1-fecha2

En la tabla 2 un producto puede estar no disponible entre (fecha 1-fecha2) y también entre (fecha 3-fecha 4) y otros productos estar disponible ya que no ha sido ocupado aún y por lo tanto no aparece en la tabla 2.

Hago la consulta siguiente :

Select * from Tabla2 where ( fecha_solicitada NOT BETWEEN fecha1 AND fecha2
OR fecha_solicitada2 NOT BETWEEN fecha1 AND fecha2)


Esta consulta me arroja los productos que están disponibles y están presentes en la tabla 2 pero aquel producto que no esté ocupado( por lo tanto no está en la TABLA2) no me lo arroja.
He pensado en la tabla 2 abrir un rango de fechas DE DISPONIBILIDAD y crear otro campo con disponibilidad =1 y los no disponibles con disponibilidad = 0.
El problema es que se cruzan los rangos de fechas y siempre los rangos no disponibles están incluidos en el rango disponible y no sé hacer una consulta en la que me diga si tal producto está disponible pero en dicho rango no lo está, por lo tanto dicho producto no está DISPONIBLE.

Es un error de concepto y a lo mejor tengo mal planteada las tablas. Espero me den una solución para la consulta o sugieran un mejor diseño para las tablas.

Muchísimas gracias de antemano.
  #2 (permalink)  
Antiguo 27/01/2012, 08:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Rango de fechas y consulta de disponibilidad

Código MySQL:
Ver original
  1. from Tabla1 t1
  2.     LEFT JOIN Tabla2 t2
  3.          ON t1.id=t2.idproducto
  4. where (( fecha_solicitada NOT BETWEEN t2.fecha1 AND t2.fecha2
  5. OR fecha_solicitada2 NOT BETWEEN t2.fecha1 AND t2.fecha2))
  6. OR (t2.fecha1 IS NULL AND t2.fecha2 IS NULL)

Creo....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 27/01/2012, 09:44
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Rango de fechas y consulta de disponibilidad

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. from Tabla1 t1
  2.     LEFT JOIN Tabla2 t2
  3.          ON t1.id=t2.idproducto
  4. where (( fecha_solicitada NOT BETWEEN t2.fecha1 AND t2.fecha2
  5. OR fecha_solicitada2 NOT BETWEEN t2.fecha1 AND t2.fecha2))
  6. OR (t2.fecha1 IS NULL AND t2.fecha2 IS NULL)

Creo....
Muchas gracias.. Crees bien. Me ha salido lo que quería, solo que he tenido un problema aún sin resolver.

Al hacer dicha consulta si me pisa alguna de las fechas en ese rango me devuelve que no está disponible, pero si el rango con el que realizo la búsqueda es mayor que el rango del producto no disponible me devuelve que sí esta disponible, cuando no lo es..

Me explico:

Producto A - No disponible entre (5/05/2012 y 10/05/2012)

Si yo realizo una búsqueda para el producto A por ejemplo entre ( 1/05/2012 y 8/05/2012) me devuelve que no está disponible. Es correcto.

Ahora bien si busco fechas entre ( 3/05/2012 y 12/05/2012) no toca el rango y por lo tanto me devuelve que sí está disponible, cuando no lo está...

En base a la consulta anterior alguna sugerencia para que no me devuelva el dato erróneo??

Muchas gracias de antemano..
  #4 (permalink)  
Antiguo 30/01/2012, 04:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Rango de fechas y consulta de disponibilidad

fecha_solicitada=fechaInicio
fecha_solicitada2=fechaFin

Estas buscando periodos no fechas concretas luego es un sistema de reservas hay muchos ejemplos en este mismo foro...

http://www.forosdelweb.com/f86/sistema-reserva-965870/

http://www.forosdelweb.com/f86/consulta-between-966844/
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 30/01/2012, 06:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Rango de fechas y consulta de disponibilidad

Cita:
Iniciado por quimfv Ver Mensaje
fecha_solicitada=fechaInicio
fecha_solicitada2=fechaFin

Estas buscando periodos no fechas concretas luego es un sistema de reservas hay muchos ejemplos en este mismo foro...

[url]http://www.forosdelweb.com/f86/sistema-reserva-965870/[/url]

[url]http://www.forosdelweb.com/f86/consulta-between-966844/[/url]
Muchas gracias pero ya lo resolví añadiendo en la consulta que las fechas en la bd no estuviera comprendida entre las fechas solicitadas.

Gracias de nuevo.

Etiquetas: disponibilidad, rango, select, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.