Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/02/2015, 13:51
Avatar de alexmetola
alexmetola
 
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Consulta complicada Fechas

A ver, necesito saber los registros que estén solapados entre ellos, se que es una consulta difícil y mas aun explicándolo por aquí:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `MyTable` (
  2.   `Id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `Asigned` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  4.   `StartTime` datetime DEFAULT NULL,
  5.   `EndTime` datetime DEFAULT NULL,
  6.   PRIMARY KEY (`Id`)
  7.  
  8. INSERT INTO `MyTable` (`Id`, `Asigned`, `StartTime`, `EndTime`) VALUES
  9. (1, '200', '2014-12-24 06:00:00', '2014-12-24 13:30:00'),
  10. (2, '200', '2014-12-24 07:00:00', '2014-12-24 08:00:00'),
  11. (3, '100', '2014-12-25 06:00:00', '2014-12-25 08:30:00'),
  12. (4, '100', '2014-12-25 07:00:00', '2014-12-25 08:00:00'),
  13. (5, '100', '2014-12-25 07:00:00', '2014-12-25 07:30:00'),
  14. (6, '200', '2014-12-25 06:00:00', '2014-12-25 08:30:00'),
  15. (7, '300', '2014-12-25 06:00:00', '2014-12-25 16:00:00'),
  16. (8, '400', '2014-12-25 06:00:00', '2014-12-25 08:41:00'),
  17. (9, '300', '2014-12-25 17:00:00', '2014-12-25 20:30:00'),
  18. (10, '100', '2014-12-30 06:00:00', '2014-12-30 08:30:00');

Por ejemplo tenemos estos 10 registros y yo quiero saber los solapados cuyo asigned sea el mismo:
-Miro los asigned del 100, que son el 3,4,5,10 y veo cual de ellos tiene la fecha de inicio entre la fecha de inicio y fin del otro, en este caso los solapados son el 4 y 5 ya que su fecha de inicio empieza a las 7:00 esta entre la fecha del registro 3 que es de las 6:00-8:30.
-Miro los asigned del 200 que son el 1,2,6 y veo que el solapado es el 2 pues su fecha de inicio que es a las 7:00 esta entre las fechas del registro 1 que son de las 6:00-13:30.
-Miro los asigned del 300 que son el 7,9 y veo que no hay solapados.
-Miro los asigned del 400 que son el 8 y veo que no hay solapados.

Para mi aquellos registros que digo solapados son los que tienen su fecha de inicio entre la fecha de inicio y fin de otro de los registros.

Necesito sacar una consulta, que me saque los registros que necesito que en este caso serian el 2,4,5.
-Supongo que mediante cursores comparando uno a uno todos los registros puedo sacar mis resultados, pero no se si realmente es lo mas óptimo o no.

Saludos y gracias.

Última edición por alexmetola; 09/02/2015 a las 14:00