sql >> Databáze >  >> RDS >> Mysql

Determine Logic for MySQL Select - rezervační systém

Nejsem si tím 100% jistý, ale myslím, že tento dotaz by měl být docela blízko:

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

Nahraďte @starttime, @endtime &@equipID příslušným ID zařízení a časy začátku a konce zadané uživatelem. Pokud tento dotaz nevrátí žádné výsledky, pak by neměly být žádné časové konflikty.

V podstatě je to kontrola těchto 3 scénářů, kde *je váš počáteční a koncový čas, - je nevyužitý čas a | je čas, aby ho použil někdo jiný:

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


  1. Použití isql s připojovacím řetězcem

  2. Jak najít nejvýkonnější dotazy v SQL Server 2008?

  3. oracle 12c - výběr řetězce po posledním výskytu znaku

  4. MariaDB CURRENT_TIME() Vysvětleno