Ver Mensaje Individual
  #8  
Antiguo 03-06-2022
Aitrus Aitrus is offline
Registrado
 
Registrado: mar 2016
Posts: 9
Reputación: 0
Aitrus Va por buen camino
Cita:
Empezado por bucanero Ver Mensaje
En la respuesta que he dado anteriormente aparece el campo AID en la tabla, que incorpore para mis pruebas, este es de tipo AutonumericID para identificar de forma única cada registro y lo utilizo para que los LEFT JOIN no devuelvan el mismo registro que lo esta enlazando.

Como dicho campo no se si esta en los datos originales, esta modificación se puede omitir simplemente comparando con los campos desde y hasta

Aquí esta la SQL sin dicho campo:

Código SQL [-]-- localiza los principios de bloque independientes SELECT `ini`.id, ini.desde, ( -- -- localiza el fin de bloque -- que sera la fecha mas cercana al inicio de bloque SELECT min(fin.hasta) AS hasta FROM `fechas` fin LEFT JOIN fechas ant ON ant.id = fin.id AND NOT (fin.desde = ant.desde AND fin.hasta = ant.hasta) AND fin.hasta BETWEEN ant.desde AND ant.hasta WHERE ant.id IS NULL AND fin.id = ini.id AND fin.`hasta` >= ini.hasta) AS hasta FROM `fechas` ini LEFT JOIN fechas ant ON ant.id = ini.id AND NOT (ini.desde = ant.desde AND ini.hasta = ant.hasta) AND ini.desde BETWEEN ant.desde AND ant.hasta WHERE ant.id IS NULL ORDER BY ini.id, ini.desde;

Hola, primero gracias a todos por la ayuda prestada.
Esto hace lo que necesitaba y no conseguia hacerlo, muchas gracias por la ayuda.
Responder Con Cita