Mailinglisten-Archive |
Hallo Norbert, Lutz Zetzsche schrieb: > theoretisch gibt es neun Überschneidungsmöglichkeiten, wenn ich mich nicht > verrechnet habe: den ganzen Tag hat mich noch etwas gestört... Gerade bin ich darauf gekommen, was... Ich habe zwei Möglichkeiten vergessen! ;-) Es sind also insgesamt 11: > 1.-3.: > Die Startzeit eines neuen Zeitraums entspricht genau der Startzeit eines > vorhandenen Eintrags, die Endzeit des Zeitraums liegt 1. vor, 2. genau auf > oder 3. hinter der Endzeit des Eintrags. > > 4.+5.: > Die Endzeit eines neuen Zeitraums entspricht genau der Endzeit eines > vorhandenen Eintrags, die Startzeit des Zeitraums liegt 4. vor oder 5. > hinter der Startzeit des Eintrags. > > 6.+7.: > Die 6. Start- oder 7. Endzeit eines neuen Zeitraums liegt innerhalb eines > vorhandenen Eintrags, die andere Zeit außerhalb. > > 8.+9.: > Die Start- und die Endzeit eines neuen Zeitraums liegen beide 8. inner- > oder 9. außerhalb eines vorhandenen Eintrags. 10.: Die Startzeit des neuen Zeitraums entspricht genau der Endzeit eines vorhandenen Eintrags. 11.: Die Endzeit des neuen Zeitraums entspricht genau der Startzeit eines vorhandenen Eintrags. > Folgende Prüfungen müßtest Du durchführen: > > a) > Entspricht die Startzeit des neuen Zeitraums genau der Startzeit eines > vorhandenen Eintrags? > -> deckt die Fälle 1.-3. ab > > b) > Liegt die Startzeit des neuen Zeitraums genau zwischen der Start- und > Endzeit eines vorhandenen Eintrags? > -> deckt die Fälle ab 5., 6. und 8. ab > > c) > Liegt die Startzeit eines vorhandenen Eintrags genau zwischen der Start- > und Endzeit des neuen Zeitraums? > -> deckt die Fälle 4., 7. und 9. ab Die erforderlichen Prüfungen für alle 11 Fälle, die mir eingefallen sind ;-), lassen sich damit aus meiner Sicht insgesamt wie folgt zusammenfassen: WHERE (Startzeit1 BETWEEN Startzeit2 AND Endzeit2) OR (Startzeit2 BETWEEN Startzeit1 AND Endzeit1) Was gleichbedeutend ist mit: WHERE (Startzeit1 >= Startzeit2 AND Startzeit1 <= Endzeit2) OR (Startzeit2 >= Startzeit1 AND Startzeit2 <= Endzeit1) Eine verblüffend einfache und verständliche Lösung, wenn man den Wust von Möglichkeiten betrachtet, die es gibt. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive