Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 25-05-2022
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Creo que una forma de hacerlo puede ser de la siguiente manera:

Hay que localizar los principios de bloque inicial y el ultimo final de bloque,
para lo cual debe de cumplir que en los principios de bloque, el campo `desde` no este contenido dentro de ningún otro bloque
y para los finales de bloque es el campo `hasta` el que no debe de estar contenido dentro de ningún bloque.

Una vez que tienes el principio de bloque, el final de bloque, será la menor fecha de todos los finales de bloque que sea mayor que la fecha del principio de bloque.


Con los datos que has puesto de ejemplo, creo que este código te puede funcionar:

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.aid <> fin.aid
                    AND ant.id = fin.id
                    AND fin.hasta BETWEEN ant.desde AND ant.hasta
        WHERE     ant.aid IS NULL
              AND fin.id = ini.id
              AND fin.`hasta` >= ini.hasta)
          AS hasta
  FROM `fechas` ini
       LEFT JOIN fechas ant
          ON     ant.aid <> ini.aid
             AND ant.id = ini.id
             AND ini.desde BETWEEN ant.desde AND ant.hasta
 WHERE ant.aid IS NULL
ORDER BY ini.id, ini.desde;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta entre 2 fechas. DeLiRioS MySQL 14 29-04-2013 18:36:35
Consulta SQL a access entre 2 fechas juanma92 SQL 36 03-12-2012 10:50:23
Consulta Mysql Suma entre rango de fechas kaeltas MySQL 4 22-06-2012 21:30:44
Consulta entre fechas con ADO radenf Varios 7 16-12-2010 12:06:35
Obtener consulta entre fechas maravert MySQL 1 16-11-2009 22:44:15


La franja horaria es GMT +2. Ahora son las 15:01:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi