Определить логику для MySQL Select - Система бронирования - PullRequest
0 голосов
/ 19 августа 2009

Я создаю резервирование оборудования (PHP / MySQL) для моей школы.

Моя база данных выглядит так:

tblEvents:
 id
 start
 end
 equipID


tblEquipment:
  id
  name
  description

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

Например, если у меня есть следующие данные:

tblEvents:
  id      start          end         equipID
  1     1251312300    1251324000       1

И пользователь отправляет запрос, проверяя, доступен ли «equipID» 1, и добавляет:

1251300300 в качестве их начала и 1251524000 в качестве их конца.

Любая помощь по началу работы была бы великолепна. Благодарю.

Ответы [ 2 ]

1 голос
/ 19 августа 2009

Я не уверен на 100% в этом, но я думаю, что этот запрос должен быть довольно близок:

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

Замените @starttime, @endtime & @equipID на соответствующий идентификатор оборудования и время начала и окончания, введенные пользователем. Если этот запрос не возвращает результатов, то не должно быть конфликтов времени.

В основном он проверяет эти 3 сценария, где * - ваше время начала и окончания, - - неиспользованное время, а | время, когда оно используется кем-то другим:

-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------
0 голосов
/ 19 августа 2009
SELECT * FROM tblEvents
WHERE NOW() > FROM_UNIXTIME(end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...