Условието за присъединяване:
- Опитайте да намерите друго събитие със същата стая
- Но трябва да има различен идентификатор от вашия
- Трябва да се припокриват дати Определяне дали два периода от време се припокриват
- Накрая трябва да има по-късна създадена дата.
Ако не можете да намерите друг ред, това означава, че сте сами или защото не се припокриват, или защото сте последната дата.
SELECT a.*FROM "events" aLEFT JOIN "events" b ON a.room =b.room AND a.id <> b.id AND a."start" <=b."end" И a."end">=b."start" И a.created_at
ИЗХОД
<предварителен код>| ID | начало | край | created_at | стая ||----|-----------------------|------------------- ---|-----------------------------|-------|| 2 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861876Z | Стая 1 || 7 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.20202Z | Стая 1 || 9 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861877Z | Стая 2 || 14 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.20202Z | Стая 2 || 16 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.202021Z | Стая 3 |