Я создал страницу для бронирования номеров в библиотеке. Когда пользователь приходит и берет ключ, столбец «извлечено» его записи обновляется до «1». Пользователь может опоздать максимум на 15 минут. Через 15 минут бронирование будет удалено, чтобы другие пользователи могли забронировать номер.
Стол room_reservation
имеет столбец с именем reservation_id
, Число в этом столбце используется в двух других таблицах. Продолжительность, владелец бронирования и некоторые другие данные хранятся в этой таблице.
Стол reservation_checked_out
имеет столбец checked_out
(по умолчанию 0
) сохраняя значение 0 или 1. Другой столбец entity_id
где хранится информация, для какой брони ключ был выписан. Entity_id
в этой таблице совпадает с reservation_id
от table room_reservation
,
Стол reservation_datetime
держит в столбце reservation_datetime_value
когда оговорка была сделана и столбец entity_id
для какой резервации. Снова: entity_id
в этой таблице совпадает с reservation_id
от table room_reservation
,
Как я могу удалить бронирование в таблице room_reservation
если ключ не проверен в таблице reservation_checked_out.checked_out
но бронирование началось 15 минут назад в таблице reservation_datetime.reservation_datetime_value
?
Любая идея о том, как я мог бы сделать эту работу?
Попробуйте этот SQL-запрос:
DELETE r.* FROM `room_reservation` r INNER JOIN `reservation_checked_out` c ON (c.entity_id = r.reservation_id), `reservation_datetime` d ON (d.entity_id = r.reservation_id) WHERE c.checked_out = 0 AND d.reservation_datetime_value <= NOW() - INTERVAL 15 MINUTE;
Вы можете выполнить это через PHP с помощью задания cron.
Других решений пока нет …