Hola, perdon a todos, al copiar he arrastrado un número, en cuanto al SQL és MySQL:
En una tabla con estos registros:
Cita:
id Desde Hasta
1 2022-09-21 2022-09-23
1 2022-09-21 2022-09-23
1 2022-09-22 2022-09-25
1 2022-09-22 2022-09-25
|
me devuelve esto:
Cita:
Código:
id Desde Hasta
1 2022-09-21 2022-09-25
1 2022-09-21 2022-09-25
|
Y debería devolver un solo registro por id con igual fechas: en cuanto a la consulta és la última de Bucanero:
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;
Gracias.