Команда SQL между двумя датами для резервирования таблицы

В настоящий момент я разрабатываю систему бронирования для ресторана, который всегда заполнен, и если кто-то хочет приехать, сделайте свою бронь.

Это означает, что хозяин входит в приход и отъезд, поэтому точный интервал, в котором хост хочет быть в ресторане.

So if that customer A has a reservation 8:00 pm to 10:00 pm and customer arrives B, who wants to come 9:00 pm to 11:00 pm and wants to book the same table as the customer A system will not let go, because the times overlap .

 $GuetComming = '2014-01-21 12:30:00' $GuestDepature = '2014-01-21 16:30:00' $i= '10' 

SQL-запрос:

 SELECT * FROM `booking` where (Table='$i' AND Comming BETWEEN '$GuestComming' AND '$GuestDepature') or (Table='$i' AND Depature BETWEEN '$GuestComming' AND '$GuestDepature') or (Table='$i' AND Comming <= '$GuestComming' AND Depature >='$GuestDepature') or (Table='$i' AND Comming BETWEEN '$GuestComming' AND '$GuestDepature') 

Я в настоящее время командую, что работает, но я считаю, что это будет намного проще.

 This is how it works, but unfortunately it happens sometimes that a table is available when it is reserved. 

Поэтому поиск лучшего решения, потому что в ресторане approximately 100 tables и я считаю, что иногда бывает так, что серверу не удается выяснить, зарезервирована ли таблица.

Я бы сводил его к следующему:

 SELECT * FROM `booking` WHERE Table='$i' AND NOT(Comming >= '$GuestDepature' OR Depature <= '$GuestComming') 

Результат запроса должен быть пустым, если таблица повторно загружена. Не знаете, как работает поле «odchodHosta».

// Обновление SQL-добавлено NOT