capypad
0 Tage Serie
sql / expert
Snippet

Logik zur Erkennung zeitlicher Überlappungen

Die Identifizierung überlappender Intervalle ist eine häufige Experten-Herausforderung. Die Logik (StartA < EndeB AND StartB < EndeA) ist der mathematisch optimale Weg, um jede Schnittmenge zwischen zwei Zeiträumen zu erkennen und komplexe verschachtelte CASE-Anweisungen zu vermeiden.

snippet.sql
sql
1
2
3
4
5
6
SELECT a.id, b.id
FROM Bookings a
JOIN Bookings b ON a.room_id = b.room_id
AND a.id < b.id
WHERE a.start_time < b.end_time
AND b.start_time < a.end_time;
Erklärung
1
AND a.id < b.id
Verhindert den Vergleich einer Zeile mit sich selbst und stellt sicher, dass jedes Paar nur einmal geprüft wird.
2
WHERE a.start_time < b.end_time AND b.start_time < a.end_time
Die von 'Allens Intervallalgebra' inspirierte Bedingung zur Erkennung jeglicher Überlappung.