Hallo Rolf,
also ICH würde das mit einer Query lösen und die Tage nachher in der nachgelagerten Programmlogik abbilden.
OK, ich versuchs auch mal.
Es gibt eine Menge Fälle (15, soweit ich weiß), wie sich zwei Zeiträume überlappen können, aber alle haben eins gemeinsam. Sei S der Suchzeitraum und T der Terminzeitraum, dann ist T relevant, wenn T.Ende >= S.Anfang UND T.Anfang <= S.Ende gilt. Oder andersrum mit de Morgan: T ist irrelevant, wenn T.Ende < S.Anfang ODER T.Anfang > S.Ende gilt.
Kann es sein, dass in meinem Fall der Ansatz T.Ende > S.Anfang UND T.Anfang < S.Ende
sein sollte? Das würde die beiden Termine des User 1 bereits herausfiltern. >= und <= würde die Termine des User 1 hingegen einbeziehen. (Oder würde Dein 2.Teil mit MAX und MIN diese Termine ebenfalls herausfiltern? Den Teil verstehe ich nämlich noch nicht ganz.)
Für die Treffer bildet man dann MAX(S.Anfang, T.Anfang) und MIN(S.Ende, T.Ende) und hat den gemeinsamen Bereich. Das kann man sogar schon vom SQL erledigen lassen.
Da ich diesen Teil noch nicht ganz verstehe: kannst du mir hierfür ein Beispiel geben, wie ich das in SQL umsetzen müßte?
Pit