capypad
0 Tage Serie
sql / expert
Snippet

Erkennung von Intervall-Überlappungen mit Self-Joins

Implementiert einen Non-Equi Self-Join, um Planungskonflikte zu erkennen. Durch den Vergleich zweier Mengen von Start- und Enddaten identifizieren wir Zeilen, die dieselbe Ressource zur gleichen Zeit belegen.

snippet.sql
sql
1
2
3
4
5
6
SELECT a.booking_id, b.booking_id
FROM room_bookings a
JOIN room_bookings b ON a.room_id = b.room_id
AND a.booking_id < b.booking_id
AND a.start_date < b.end_date
AND a.end_date > b.start_date;
Erklärung
1
a.booking_id < b.booking_id
Verhindert den Vergleich einer Zeile mit sich selbst und stellt sicher, dass jedes Paar nur einmal gemeldet wird.
2
a.start_date < b.end_date AND a.end_date > b.start_date
Standardmäßige relationale Logik zur Identifizierung überschneidender Zeiträume.