Avatar billede munkiex Nybegynder
23. januar 2015 - 09:25 Der er 3 kommentarer og
1 løsning

Mysql: Tjekke om start - slut tidspunkt laver konflikt i databasen

Hej,

Jeg har et spørgsmål angående et booking modul hvor man skal se om der er nogle tidspunkter der overlapper hinanden (laver konflikt på et tidspunkt).
Håber følgende giver mening, og at nogen har mulighed for at hjælpe.

Tabellen ser ud som følgende:
BookingID    BookingStartDate    BookingEndDate    BookingStartTime    BookingEndTime
23443            2015-01-09              2015-01-18              08:00                        16:00

Ovenstående betyder at booking starter den 9/1-2015 og slutter den 18/1-2015, hvor booking starter hver dag fra 8:00 til 16:00 (håber det giver mening).
fx:
2015-01-09  kl. 08:00 - 16:00
2015-01-10 kl. 08:00 - 16:00
2015-01-11 kl. 08:00 - 16:00
osv frem til den 18-01

Hvis jeg så laver følgende booking:
2015-01-12 kl. 06:00 - 11:00  (Skal skabe konflikt)
2015-01-13 kl. 06:00 - 07:45  (Skal IKKE skabe konflikt)
2015-01-14 kl. 09:15 - 10:45  (Skal skabe konflikt)
2015-01-15 kl. 15:45 - 16:15  (skal skabe konlifkt)
2015-01-20 kl. 09:00 - 10:00  (Skal IKKE skabe konflikt)

Så hvis jeg prøver på en dato, at booke på noget som er inden for en tidsramme, som allerede er booket så skal den lave konflikt. Det er her jeg skal bruge lidt hjælp: Hvordan gør jeg dette i MYSQL?
Jeg kan godt finde finde ud af om den nye booking ligger inden for datoen, men ikke inden for tidspunktet.

Mvh.
Martin
23. januar 2015 - 13:41 #1
Det du viser som booking 23443 er i virkeligheden en serie på 10 bookingen.  Du vil uden tvivl gøre det nemmere for dig selv hvis du bevarer dem som sådan i tabellen, for eksempel:

Booking serial        start                    end
23443      1      2015-01-12 08:00  2515-01-12 16:00
23443      2      2015-01-13 08:00  2515-01-13 16:00
23443      3      2015-01-14 08:00  2515-01-14 16:00

o.s.v.

Når du så får en ny booking som for eksempel
12345      1      2015-01-12 06:00  2515-01-12 11:00
så selecter du de bookings med ny-booking start BETWEEN booking start AND booking end OR ny-booking end  BETWEEN booking start AND booking end.  Hvis du får et eller flere resultater er der en konflikt.  Får du intet resultat kan du godkende og registrere bookingen.
Avatar billede munkiex Nybegynder
26. januar 2015 - 11:53 #2
Mange tak for svaret
Avatar billede munkiex Nybegynder
26. januar 2015 - 11:53 #3
Kan ikke accepterer dit svar
26. januar 2015 - 21:53 #4
Her  er mit svar du kan acceptere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester