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

Mostrar registros por fecha. Disponibilidad plazas

Estas en el tema de Mostrar registros por fecha. Disponibilidad plazas en el foro de Mysql en Foros del Web. Hola, antes que nada muchas gracias por vuestro tiempo. Estoy pensando en un sistema para un aparcamiento con por ejmpleo 5 plazas para no liarnos. ...
  #1 (permalink)  
Antiguo 07/10/2014, 18:27
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Mostrar registros por fecha. Disponibilidad plazas

Hola, antes que nada muchas gracias por vuestro tiempo. Estoy pensando en un sistema para un aparcamiento con por ejmpleo 5 plazas para no liarnos.

La duda esta a la hora de consultar la disponibilidad de las plazas por fecha. Mi idea es consultar el número de resgistros que encaje con el rango de fechas buscado.

TABLA RESERVAS
id fecha_inicio fecha_final
1 1/10/2014 4/10/14
2 2/10/2014 3/10/14
3 1/10/2014 4/10/14

En este caso tendría 3 reservas si busco disponibilidad en entre 1/10/2014 y el 5/10/14. Por lo que si comparo con el número de plazas aún tengo 2 plazas libres.

Todo esto lo hago para ver si tengo aparcamientos en libre en un determinado rango.

¿Estaria bien así?

Código SQL:
Ver original
  1. SELECT dia_entrada, dia_salida FROM disponibilidad
  2.     WHERE     (dia_entrada BETWEEN '$dia_entrada' AND '$dia_salida')
  3.                      OR (dia_salida BETWEEN '$dia_entrada' AND '$dia_salida')
  4.                      OR (dia_entrada <= '$dia_entrada'  AND dia_salida >= '$dia_salida')


¿ me mostraria reservas duplicadas?

Del tipo entre 2/10/2014-3/10/14 me muestre que conincide con dia de entrada y también con el de salida. Mostrando por ejemplo la reserva con id 1 dos veces.

También me gustaria buscar por horas nunca lo he echo, ¿serviría poner campo datetime con la fecha y la hora?

Un saludo Muchas gracias

Última edición por luisalberti; 07/10/2014 a las 18:47
  #2 (permalink)  
Antiguo 07/10/2014, 19:58
Avatar de 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: Mostrar registros por fecha. Disponibilidad plazas

Primero necesitamos una aclaración respecto a tus datos.
Según nos dices, tienes esto:
Cita:
TABLA RESERVAS
id fecha_inicio fecha_final
1 1/10/2014 4/10/14
2 2/10/2014 3/10/14
3 1/10/2014 4/10/14
Se infiere por lo que muestras que la fecha está almacenándose en un campo de tipo VARCHAR, en lugar de DATE o DATETIME.
¿Es así?

Si tal fuera, estaría mal, y no es factible hace runa comparación con BETWEEN en esas condiciones, ya que MySQL no reconocería el contenido de campos con el formato DD/MM/AAAA como una fecha.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/10/2014, 20:01
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Mostrar registros por fecha. Disponibilidad plazas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Primero necesitamos una aclaración respecto a tus datos.
Según nos dices, tienes esto:

Se infiere por lo que muestras que la fecha está almacenándose en un campo de tipo VARCHAR, en lugar de DATE o DATETIME.
¿Es así?

Si tal fuera, estaría mal, y no es factible hace runa comparación con BETWEEN en esas condiciones, ya que MySQL no reconocería el contenido de campos con el formato DD/MM/AAAA como una fecha.

Hora, gracias por tu respuesta.Es un campo date time lo escribí no puse las horas por error pero eso datetime.

Un saludo
  #4 (permalink)  
Antiguo 07/10/2014, 20:10
Avatar de 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: Mostrar registros por fecha. Disponibilidad plazas

Ok. Mejor...

Bueno, respecto a si tu query devolvería o no lineas duplicadas, en realidad técnicamente no porque estás consultando una única tabla. En ese contexto las condiciones del WHERE se evalúan para cada registro de la tabla, lo que significa que una vez que uno pasa la validación, se sigue con el próximo. No se evalúan las condiciones de ese WHERE separadamente.
Diferente sería si realizaras un JOIN contra otra tabla en la que hubiese con esta una relación de cardinalidad 1:N. Allí podría suceder que aparecieran aparentes duplicaciones en ciertos datos (aparente, no reales).
Lo que si tienes que tener en cuenta es que estás consultando por dos campos solamente, las fechas de entrada y salida, por lo que si dos registros dados se refieren a reservas de diferentes habitaciones, como no está el ID de la habitación, devolvería las fechas aparentemente duplicadas, porque pertenecen a registros diferentes.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/10/2014, 20:32
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Mostrar registros por fecha. Disponibilidad plazas

Si te entinedo, como no muestro el id en la consulta podría tener reservas con la misma fecha y podría pensar que son duplicadas. Pero ya me aclaras arriba que lo evelua por registro y luego pasa al siguiente.

También me gustaria buscar por horas nunca lo he echo, ¿serviría poner campo datetime con la fecha y la hora datetime()?


Un Saludo
  #6 (permalink)  
Antiguo 07/10/2014, 20:36
Avatar de 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: Mostrar registros por fecha. Disponibilidad plazas

Si, para poder procesar por horas, el dato en la tabla debe incluir las horas, y el dato pasado por parámetro en programación debe cumplir con el formato "AAAA-MM-DD HH:mm:ss", donde la hora es de 00:00:00 a 23:59:59 (24:00:00 existe, pero es la hora cero del dia siguiente :P)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/10/2014, 20:47
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Mostrar registros por fecha. Disponibilidad plazas

Me podrías poner un ejemplo de la consulta que tengo con horas.
Otra pregunta que tengo es si luego podría desde sql directamente sacarlas horas o directamente hacer el calculo en sql.

Por ejemplo tengo el precio por hora seria de 5€ * 23horas, el problema es que a veces me podria dar 23 horas con 25 minutos. No se si serias mejor hacerlo por php por ejmplo.

Alguna idea, muchas gracias.

Etiquetas: disponibilidad, fecha, registros, select, tabla
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 00:46.