Afficher un message
Vieux 05/10/2007, 15h43   #12
Rik Wasmus
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Find next available slot in Calendar

On Fri, 05 Oct 2007 14:58:48 +0200, Jerry Stuckle
<jstucklex@attglobal.net> wrote:

> Rik Wasmus wrote:
>> On Fri, 05 Oct 2007 06:58:22 +0200, subtenante
>> <zzsubtenantezz@gmail.com> wrote:
>>
>>> On Tue, 02 Oct 2007 18:02:58 -0700, ½aßrain <mccbrad@gmail.com> wrote:
>>>
>>>> Hi Guys,
>>>>
>>>> I have a table of events with a start and finish datetime.
>>>>
>>>> I am trying to write a php function that will return the next earliest
>>>> start time that an event will fit. Will this be something that I can
>>>> do just in mysql?
>>>>
>>>> or something much more complex?
>>>>
>>>> anyone have any tips?
>>>
>>> SELECT * FROM mytable
>>> WHERE start > NOW()
>>> ORDER BY start
>>> LIMIT 1

>> That's for the next event indeed. I gathered the OP meant 'next empty
>> slot'. In which case these 'slots' should either have a table or the OP
>> should tell us more about them.

>
> I tried something like this several years ago in DB2 for a conference
> room reservation system. I wasn't overly successful. I did get it to
> work with temporary tables and recursive SQL, but the whole thing was a
> huge mess. Even as a SP it was complicated and tough to understand.
>
> I finally just did a simple query to fetch allocated timeslots, ordered
> by the time, and had a C function find the first available slot. The
> code came out much cleaner and more understandable.


Yup, I'd hughly prefer 'or the OP should tell us more about them' portion
of the answer. Aside from 'taken' timeslots, what are his requirements? Do
we take 'working hours' into account for this system or is it continuous,
are 'slots' of an arbitrary length or set/rounded to something, what are
the other requirements for an event to 'fit', etc. etc.

One could device a query getting all upcoming 'holes' in a schedule, plus
a 'slot' of a predefined length after the last ending time in the table,
filter them for length, and find the first slot with a particular minimum
length in the results. How this would look exactly would heavily depend on
the actual needs.
--
Rik Wasmus
  Réponse avec citation
 
Page generated in 0,06103 seconds with 9 queries