David Aurelio: Termintabelle: Überlappende Termine zusammenfassen

Beitrag lesen

Hallo Ilja,
leider gibt das pro Datum nur einen Satz zurück, mit dem Anfang des jeweils ersten und dem Ende des jeweils letzten Termins.

Ich habe gerade noch folgendes ausprobiert:

SELECT a.date AS `Datum`,  
       (  
        SELECT MIN(b.begin) FROM termine AS `b`  
          WHERE b.begin >= a.begin  
            AND b.end >= a.end  
            AND b.begin <= a.end  
            AND b.date = a.date  
       ) AS `Anfang`,  
       (  
        SELECT MAX(c.end) FROM termine AS `c`  
          WHERE c.begin >= a.begin  
            AND c.end >= a.end  
            AND c.begin <= a.end  
            AND c.date = a.date  
       ) AS `Ende`  
  FROM termine AS `a`  
  GROUP BY `Ende`  
  ORDER BY a.date, a.begin

Das funtkioniert aber auch nur bei zwei überlappenden Terminen.
Man bräuchte ein(e) 'WHILE'-Statement/-Funktion oder etwas in der Art, da man sonst pro potentieller Überlappung ein weiteres Subselect einbauen müsste.

Unglaublich, wie schwer eine auf den ersten Blick so einfach erscheinende Aufgabe teilweise umzusetzen ist.

schöne Grüße,
David