Ik ben bezig met een planning algoritme te maken. Mijn eerste opzet is al gelukt.
Stel ik heb volgende data staan:
booking_id bookingdate
1; "2013-01-29 13:00:00"
3; "2013-01-29 13:20:00"
4; "2013-01-29 13:30:00"
5; "2013-01-29 13:40:00"
6; "2013-01-29 13:50:00"
Met mijn huidig algoritme zal wanneer ik een nieuw record toevoeg booking_date 2013-01-29 14:00:00 worden. Wat prima is. Alleen zit er één groot nadeel in dit algoritme. Als een boeking om één of andere reden verwijderd wordt, dan is er ergens een onbenut tijdstip. Bekijk bijvoorbeeld de records hierboven, tussen record 1 en record 2 zit 20 minuten. Elke boeking duurt 10 minuten, dus daar zou nog een boeking tussen kunnen geplaatst worden.
Ik heb even de query vereenvoudigd, aangezien er een koppeling is met gebruikers, locaties etc.
SELECT bookingdate + interval '10 minutes' AS date
FROM bookings
ORDER BY bookingdate DESC
FETCH FIRST ROW ONLY --hetzelfde effect als LIMIT
/* dit zou me dan 2013-01-29 14:00:00 teruggeven */
Even opmerken dat ik gebruik maak van PostgreSQL. Als je een oplossing weet in MySQL mag dat ook, ik beheers beide :-).
Concreet dus, zoek ik hoe ik deze query zo efficiënt mogelijk kan aanpassen zodanig dat ik het eerste vrije interval van 10 minuten kan terugvinden.