我创建了一个页面来预订图书馆的房间。每当用户来取钥匙时,其条目的“已签出”列将更新为“ 1”。用户最多可能会迟到15分钟。 15分钟后,预订将被删除,以便其他用户可以预订房间。

room_reservation具有名为reservation_id的列。此列中的数字在其他两个表中使用。持续时间,预订所有者和其他一些信息存储在此表中。

reservation_checked_out的列checked_out(默认为0)保持值为0或1。另一列是entity_id,其中存储了已针对其签出了预留键的信息。该表中的Entity_idreservation_id中的table room_reservation匹配。

reservation_datetime在进行预订时在reservation_datetime_value列中,在进行预订时在entity_id列中保存。同样:此表中的entity_idreservation_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执行此操作。

10-08 06:20
查看更多