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

Consulta Between

Estas en el tema de Consulta Between en el foro de Mysql en Foros del Web. Hola, tengo un problema y no se como resolverlo, tengo una base de datos en la cual tengo dos campos uno de Hora Inicio (hri) ...
  #1 (permalink)  
Antiguo 29/12/2011, 02:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Consulta Between

Hola, tengo un problema y no se como resolverlo, tengo una base de datos en la cual tengo dos campos uno de Hora Inicio (hri) y otro de Hora Final (hrf), quiero realizar una consulta que me traiga todo lo que se encuentra entre esas 2 Horas, por ejemplo, supongamos que la hri = 07:00 y hrf = 10:00 y hago una consulta donde la hri = 08:00 y hrf = 09:00 quiero que me traiga todo lo que se encuentre entre ese 2 horas, supongamos:

Materia HRI HRF

Calculo 07:00 10:00

Si hago una consulta:

SELECT * FROM horarios WHERE hri >= '07:00' AND hrf <= '10:00'

Si me trae el registro, pero si hago:

SELECT * FROM horarios WHERE hri >= '08:00' AND hrf <= '09:00'

No me arroja nada, lo penseba realizar con una consulta BETWEEN pero no se como, o si sea la solucion, espero me puedan ayudar. Muchas Gracias.
  #2 (permalink)  
Antiguo 29/12/2011, 03:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Consulta Between

Con que tipo de datos tienes definidos esos campos, si son VARCHAR y se ha respetado el cero a la izquierda te debería funcionar, si TIME tambien deberia funcionar pero el formato normalamente es 'hh:mm:ss'...

SELECT * FROM horarios WHERE hri >= '08:00:00' AND hrf <= '09:00:00'

Mira si tienes los segundos ...

Si es VARCHAR se daria que

'07:00'<'07:00:00'< '08:00' < '08:00:00'< '09:00' <'09:00:00'< '10:00'< '10:00:00'

'08:00' y '09:00' quedan entre '07:00:00' y '10:00:00' pero no entre '08:00:00' y '09:00:00'

No se si me explico...

En cuanto a BETWEEN se usa para encontrar valores de un mismo campo... es decir si te interesara los registros donde una de las horas este en un tramo determinado... por lo que dices no creo que sea el caso...

SELECT * FROM horarios WHERE hri BETWEEN '08:00:00' AND '09:00:00'

consejo si los campos los tienes como VARCHAR mira la posibilidad de pasarlos a TIME
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/12/2011, 02:28
 
Fecha de Ingreso: diciembre-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta Between

Muchas gracias de verdad por responder pero sigo con el mismo problema ya pase los datos a TIME porque los tengo en VARCHAR pero no me arroja nada, ya llevo un mes y no encuentro la solucion, le he estado pensando y creo que con SQL no voy a poder resolver el problema :( deja pongo un ejemplo :

Código HTML:

              |----------------------------------------------------------|
           00:00                                                      23:59

salon 1                          |------------------|
                                  07:00         12:00         

salon 2                                   |--------|
                                         09:00  11:00  

salon 3                                                    |--------|
                                                            14:00   20:00

Rango de Seleccion                      |-------------------------|
                                      10:00                       23:00
Y cuando haga la seleccion de 10:00 a 23:00 quiero que me mande los 3 salones ya que estan dentro del rango de seleccion o se encuentran encimados dentro de la seleccion, esto porque estoy haciendo un sistema de horarios y quiero mandar un aviso cuando quieran introducir alguna materia si el salon ya se encuentra ocupado en esa hora, pero pensaba hacer una consulta y si encontraba el registro decir que el salon ya esta ocupado a esa hora, pero creo que con SQL no va a ser posible, por favor alguna sugerencia, les estaria muy agradecido de verdad. Muchas Gracias
  #4 (permalink)  
Antiguo 30/12/2011, 04:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Consulta Between

Ahora te has explicado mejor, se trata de un sistema de reservas... no lo puedes hacer directamente comparando las dos horas, divide y venceras, puesto que te interesa que te retorne cosas que no estan completamente en el periodo buscado...

Código MySQL:
Ver original
  1. SELECT salon FROM tuTablaReservas
  2. WHERE hrf>'10:00:00' AND hrf<='23:00:00'
  3. SELECT salon FROM tuTablaReservas
  4. WHERE hri>='10:00:00' AND hri<'23:00:00';

La primera query dará los salones 1 y 2 de tu ejemplo, y la segunda el 3.

Resuelto!!!

Ricemos el rizo

Código MySQL:
Ver original
  1. SELECT s.salon FROM tuTablaSalones s
  2. WHERE s.salon NOT IN (SELECT r1.salon FROM tuTablaReservas r1
  3.                 WHERE r1.hrf>'10:00:00' AND r1.hrf<='23:00:00'
  4.                 UNION DISTINCT
  5.                 SELECT r2.salon FROM tuTablaReservas r2
  6.                 WHERE r2.hri>='10:00:00' AND r2.hri<'23:00:00');

Te dará los salones totalmente libres en el perido buscado.

Un OR con los parentesis adecuados tambien lo resuelve...

Código MySQL:
Ver original
  1. SELECT salon FROM tuTablaReservas
  2. WHERE (hrf>'10:00:00' AND hrf<='23:00:00') OR (hri>='10:00:00' AND hri<'23:00:00');

Resumiendo se trata de obtener los salones que tengan la hrf o la hri dentro del periodo buscado...

Visto asi tambien lo podrias hacer con BETWEEN, lo dejo para que lo hagas tu.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/12/2011 a las 07:15 Razón: Habia un error
  #5 (permalink)  
Antiguo 13/01/2012, 03:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta Between

Muchassss Gracias quimfv me abriste el panorama muy bien te lo agradezco de verdad me funciona muy bien, tengo todavia unos pequeños detalles que estoy tratando de arreglar ( estare dando lata de nuevo si me rompo la cabeza jajaja ) pero me ayudaste mucho estoy muy agradecido contigo.

Etiquetas: campos, select
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 03:38.