Mysql
 sql >> Database >  >> RDS >> Mysql

Determina la logica per MySQL Select - Sistema di prenotazione

Non ne sono sicuro al 100%, ma penso che questa query dovrebbe essere abbastanza vicina:

select * from tblEvents
where (@starttime >= start && @starttime <= end) /* Starts while someone else has it */
or (@endtime >= start && @endtime <= end) /* Ends while someone else has it */
or (@startime <= start && @endtime >= end) /* Starts before & ends after someone else has it*/
and equipID = @equipID

Sostituire @starttime, @endtime e @equipID con l'ID attrezzatura appropriato e gli orari di inizio e fine inseriti dall'utente. Se questa query non restituisce risultati, non dovrebbero esserci conflitti temporali.

Fondamentalmente sta verificando questi 3 scenari, dove *è l'ora di inizio e fine, il - è il tempo inutilizzato e | è ora che venga utilizzato da qualcun altro:

-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------