我创建了一个页面来预订图书馆的房间。每当用户来取钥匙时,其条目的“已签出”列将更新为“ 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
中检出密钥但保留在15分钟前在表reservation_checked_out.checked_out
中开始,该如何删除表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;
您可以使用cron作业通过PHP执行此操作。