TGViewer
SQL Ready | Базы Данных SQL Ready | Базы Данных @sql_ready · 17.5K subscribers
Post #1390 2.53K
Нужно найти, где бронирования, подписки или сессии пересекаются по времени?

Два интервала пересекаются, если начало одного раньше конца другого, и наоборот:
a.start_at < b.end_at
AND b.start_at < a.end_at


Это условие покрывает все случаи перекрытий, даже частичных и вложенных.

Теперь объедини данные сами с собой:
SELECT a.id, b.id
FROM bookings a
JOIN bookings b
ON a.id < b.id
AND a.start_at < b.end_at
AND b.start_at < a.end_at;


a.id < b.id, чтобы не получить пары в обе стороны.

Хочешь анализировать бронирования по ресурсу? Добавь фильтр:
AND a.room_id = b.room_id


🔥 Теперь видно, какие заявки реально конфликтуют по времени.

➡️ SQL Ready | #совет
  • 🔥 14
  • ❤ 11
  • 👍 6
  • 🤝 1
More from @sql_ready
  1. Oct 9, 2026❤️ sqlite-postgres-cours — большой практический курс по базам данных! Материал ведёт от пе…
  2. Oct 8, 2026Почему UNIQUE допускает несколько NULL в PostgreSQL! Ограничение UNIQUE гарантирует уникал…
  3. Oct 7, 2026📂 Шпаргалка по паттернам распределённых систем! Например, Replication повышает доступност…
  4. Oct 6, 2026Проверяйте связи с учётом периода! В PostgreSQL 18 связь может учитывать ещё и период его…
  5. Oct 6, 2026👍 Устройство PostgreSQL — подробная документация на русском языке! Материалы посвящены не…
  6. Oct 5, 2026COUNT(*) в PostgreSQL: MVCC, visibility map и стоимость выполнения! В PostgreSQL точный CO…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →