Điều kiện tham gia:
- Cố gắng tìm một sự kiện khác có cùng phòng
- Nhưng cần phải có một id khác với bạn
- Phải trùng lặp ngày Xác định xem hai phạm vi ngày có chồng chéo hay không
- Cuối cùng phải có một ngày tạo muộn hơn.
Nếu bạn không thể tìm thấy bất kỳ hàng nào khác có nghĩa là bạn đang ở một mình vì không trùng lặp hoặc vì bạn là ngày muộn nhất.
SELECT a.*
FROM "events" a
LEFT JOIN "events" b
ON a.room = b.room
AND a.id <> b.id
AND a."start" <= b."end"
AND a."end" >= b."start"
AND a.created_at < b.created_at
WHERE b.id IS NULL;
ĐẦU RA
| id | start | end | created_at | room |
|----|----------------------|----------------------|-----------------------------|-------|
| 2 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861876Z | Room1 |
| 7 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.20202Z | Room1 |
| 9 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861877Z | Room2 |
| 14 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.20202Z | Room2 |
| 16 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.202021Z | Room3 |