Ilja: Termintabelle: Überlappende Termine zusammenfassen

Beitrag lesen

yo,

Ich möchte gerne sich überschneidende Termine als einen einzigen zusammenfassen.

das sind zwei schritte. erst einmal musst du die termine herausbekommen, die sich überlappen. das macht man, indem man mit einem kleinen trick arbeitet. du vergleichst den startwert des einen datensatzes mit den endwert eines anderen datesnatzes und umgekehrt und das alles über einen selfjoin.

der zweite schritt ist, den jeweils kleineren, bzw. größeren wert zu nehmen, je nachdem, ob es sich um star- oder endwert handelt. das ganze noch mit einem DISTINCT ausgestattet, um doppelte datensätze rauszufiltern und voila...

SELECT DISTINCT tab1.date,
IF(tab1.begin <= tab2.begin, tab1.begin, tab2.begin) AS 'Startwert'
IF(tab1.end >= tab2.end, tab1.end, tab2.end) AS 'Endwert'
FROM termine AS tab1, termine AS tab2
WHERE tab1.id <> tab2.id
AND tab1.begin <= tab2.end
AND tab1.end >= tab2.begin

einfach mal ausprobieren und schauen, ob es noch was nachzubessern gibt.

Noch besser wäre es, direkt die "Leerräume" zwischen den Terminen selektieren zu können, aber ich gehe mal davon aus, das dies mit MySQL direkt nicht möglich ist.

darüber mache ich mir gedanken, wenn die erste abfrage klappt.

Ilja