いくつかのタイムスロットを含むテーブルがあります。例:
#id datet userid agentid duration
+=======================================================+
|1 |2013-08-20 08:00:00 |-1 |3 |5
|2 |2013-08-20 08:05:00 |-1 |3 |5
|3 |2013-08-20 08:10:00 | 3 |3 |5
|4 |2013-08-20 08:15:00 |-1 |3 |5
|5 |2013-08-20 08:20:00 |-1 |3 |5
|6 |2013-08-20 08:25:00 |-1 |3 |5
|7 |2013-08-20 08:30:00 |-1 |3 |5
|8 |2013-08-20 08:05:00 |-1 |7 |15
|9 |2013-08-20 08:20:00 |-1 |7 |15
+=======================================================+
上記の例では、ID 3 のユーザーは 8:10 にスロットを持っています。(userid = -1 の場合、空きスロットであることを意味します)。彼はエージェント 5 との約束を持っています。たとえば、ユーザー 3 は別のタイムスロットを希望していますが、今回はエージェント 7 との予定です。したがって、アルゴリズムはエージェント ID 7 の空きスロットと重複しない可能性のあるスロットのみを保持する必要があります。これは、この場合、9 番目のレコードのみが解決策になることを意味します。(しかし、別のケースでは、複数の解決策があるかもしれません)。もう 1 つは、ユーザーが同じエージェントとのアポイントメントを 1 つしか持てないことです。
これを実装する方法はありますか?OVERLAPS オペレーターで考えていましたが、その方法がわかりません。