Вот упрощенная схема моей базы данных:
Users
------------------------------------
UserID | Name | Assignable
------------------------------------
5 | John Doe | 1
TimeSlots
-------------------------------------------------------
TimeSlotID | StartTime | EndTime
-------------------------------------------------------
3 | 2011-06-30 15:00:00 | 2011-06-30 16:00:00
Appointments
------------------------------------
TimeSlotID | UserID
------------------------------------
3 | 5
У меня есть пользователи, которым можно назначать временные интервалы, которые составляют встречи. Мне нужен способ начать с начального и конечного времени и запросить всех пользователей, которые могут быть назначены (флаг назначения назначен на 1) и не имеют временных конфликтов (встреч, которые перекрываются) с этими временами.
Старые временные интервалы также будут там, так что вас будут интересовать только временные интервалы, которые есть сейчас или в будущем.