webForumDet fria alternativet

MySQL: Förhindra dubbelbokningar.

Databaser & SQLur Databashanterare & SQL

3 svar · 536 visningar · startad av thevice

thevices avatartheviceMedlem sedan dec. 2005198 inlägg
Frågan#1

Hejsan,
Sitter och jobbar med ett boknings system och jag vill förhindra att en viss produkt blir bokad under samma tid som den redan har blivit bokad.

När man bokar en produkt så kan man skriva in när produkten hämtas och lämnas jag vill sedan kolla om det finns några bokningar i databasen under den tiden som man har valt. Mitt tappra försök var:
SELECT produktID FROM bokningar WHERE produktHamtas >= in_produktHamtas AND produktLamnas <= in_produktLamnas;

in_produktHamtas och in_produktLamnas är värderna som jag skickar medi min procedure.
Detta fungera inprincip enbart när produktHamtas har samma värde som in_produktHamtas och produktLamnas har samma värde som in_produktLamnas.

Har ni några förslag på hur jag ska lösa detta?
Tack på förhand

Lukaspojkens avatarLukaspojkenMedlem sedan maj 20011 312 inlägg
#2

Borde du inte kunna göra så här:
SELECT produktID FROM bokningar WHERE produktHamtas = in_produktHamtas AND produktLamnas = in_produktLamnas;

thevices avatartheviceMedlem sedan dec. 2005198 inlägg
#3

Det var också min tanke men då skulle det ju bokningen gå igenom om en produkt från första början var bokad 1 jan - 5 jan och en bokar produkten från 2 jan - 4-jan.
Det jag skulle kunna göra är att lägga till "AND produktHamtas = datum" för varje datum fram tills den lämnas men det skulle bli en väldigt lång SQL sats.

thevices avatartheviceMedlem sedan dec. 2005198 inlägg
#4

Jag tror att jag löste (har testat en massa olika datum) det med hjälp av "BETWEEN".

128 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)