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
1
2
3
4
5
6
SELECT a.id, b.idFROM Bookings aJOIN Bookings b ON a.room_id = b.room_idAND a.id < b.idWHERE a.start_time < b.end_timeAND 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.