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

un simple select se me complico :(

Estas en el tema de un simple select se me complico :( en el foro de Mysql en Foros del Web. Bueno pues tengo una tabla llamada horarios de la sigueinte manera id,fecha_inicio, fecha_fin,horario,status Y los valores son Registro 1 id = 158 fecha_inicio = 2011-06-15 ...
  #1 (permalink)  
Antiguo 10/06/2011, 12:27
 
Fecha de Ingreso: junio-2009
Mensajes: 51
Antigüedad: 14 años, 10 meses
Puntos: 1
Exclamación un simple select se me complico :(

Bueno pues tengo una tabla llamada horarios de la sigueinte manera

id,fecha_inicio, fecha_fin,horario,status

Y los valores son
Registro 1
id = 158
fecha_inicio = 2011-06-15
fecha_fin = 2011-06-24
horario = 14:00:00
status = open

Registro 2
id = 159
fecha_inicio = 2011-06-15
fecha_fin = 2011-06-24
horario = 11:00:00
status = blocked

Registro 3
id = 160
fecha_inicio = 2011-06-1
fecha_fin = 2011-06-30
horario = 11:00:00
status = blocked

Lo que querieo hacer es selecionar las que tengan el STATUS BLOCKED pero tomando en cuenta el rango de fechas para eso, es decir, yo quisiera que con el ejemplo anterior puediera hacer una consulta que como resultado me de SOLO el registro 3, ya que los registros 1 y 2 tienen el mismo rango de fechas.

De antemano muchas gracias con cualquier ayuda u orientacion que me puedan dar ya que ya tengo unas cuantas horas peliandome con esto.
  #2 (permalink)  
Antiguo 10/06/2011, 14:05
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: un simple select se me complico :(

Hola alexitech, no estoy seguro de haber entendido correctamente lo que necesitas, pero creo que el criterio que tomas para excluir el registro 2 es que el rango de fechas está comprendido en el rango de fechas del registro 3, en otras palabras se podría decir que el registro 2 es una parte del registro 3 correcto???

se me ocurre que hagas algo como esto:

Código MySQL:
Ver original
  1. mysql> create table Horarios (Registro int, id int, fecha_inicio date,
  2.     -> fecha_fin date, horario time, status varchar(15));
  3. Query OK, 0 rows affected (0.08 sec)
  4.  
  5. mysql> insert into Horarios values
  6.     -> (1, 158, '2011-06-15', '2011-06-24', '14:00:00', 'open'),
  7.     -> (2, 159, '2011-06-15', '2011-06-24', '11:00:00', 'blocked'),
  8.     -> (3, 160, '2011-06-01', '2011-06-30', '11:00:00', 'blocked');
  9. Query OK, 3 rows affected (0.05 sec)
  10. Records: 3  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> select * from Horarios;
  13. +----------+------+--------------+------------+----------+---------+
  14. | Registro | id   | fecha_inicio | fecha_fin  | horario  | status  |
  15. +----------+------+--------------+------------+----------+---------+
  16. |        1 |  158 | 2011-06-15   | 2011-06-24 | 14:00:00 | open    |
  17. |        2 |  159 | 2011-06-15   | 2011-06-24 | 11:00:00 | blocked |
  18. |        3 |  160 | 2011-06-01   | 2011-06-30 | 11:00:00 | blocked |
  19. +----------+------+--------------+------------+----------+---------+
  20. 3 rows in set (0.00 sec)
  21.  
  22. mysql> select * from Horarios T1  where status = 'blocked'
  23.     -> and not exists
  24.     -> (
  25.     -> select * from Horarios T2 where
  26.     -> T1.fecha_inicio between T2.fecha_inicio and T2.fecha_fin and
  27.     -> T1.fecha_fin between T2.fecha_inicio and T2.fecha_fin
  28.     -> and T1.status = T2.status and T2.registro != T1.registro
  29.     -> );
  30. +----------+------+--------------+------------+----------+---------+
  31. | Registro | id   | fecha_inicio | fecha_fin  | horario  | status  |
  32. +----------+------+--------------+------------+----------+---------+
  33. |        3 |  160 | 2011-06-01   | 2011-06-30 | 11:00:00 | blocked |
  34. +----------+------+--------------+------------+----------+---------+
  35. 1 row in set (0.01 sec)

La idea de la subconsulta sería buscar un elemento dentro de la tabla en donde el rango de fechas no contenga a las fechas del registro que estás analizando. No sé si me expliqué con palabras, creo que es mejor que lo pruebes con tus datos y nos comentes si te sirve o no.

Saludos
Leo.

--------------------------------------------
La frase más clara sobre el karma, de la retribución del universo,
el que ayuda es ayudado.
  #3 (permalink)  
Antiguo 10/06/2011, 14:52
 
Fecha de Ingreso: junio-2009
Mensajes: 51
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: un simple select se me complico :(

Hey leonardo_josue muchas gracias eso es presisamente lo que queria hacer !!! hombre me has ayudado mucho!!!.
  #4 (permalink)  
Antiguo 10/06/2011, 15:28
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: un simple select se me complico :(

Me alegra haber sido de ayuda...

Saludos
Leo.

Etiquetas: select, simple
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 19:30.