我正在建立一个大学停车申请数据库。如果SPACE中的车辆没有有效停放,我需要一个插入我们的PARKING_VIOLATION表的查询。例如,他们有一个无效的停车证。我想把它变成一个每隔约5分钟重复一次的SQL工作,但是在向某人发票之后它不会检测到重复。
我的查询
INSERT INTO PARKING_VIOLATION(Id, DateIssued, Description, Cost, VehicleRecieved)
VALUES(NULL,CURRENT_TIMESTAMP,'Invalid Parking Pass','75',(
SELECT
VEHICLE.Id
FROM
SPACE INNER JOIN VEHICLE ON (SPACE.OccupiedBy=VEHICLE.Id)
WHERE
VEHICLE.PassId != SPACE.PassRequired));
我尝试过REPLACE,INSERT WHERE NOT EXISTS,或者可能需要一种方法来比较DateIssued和今天。
答案 0 :(得分:1)
尝试这样的事情,在最后添加另一个WHERE以确保同一辆车在同一天没有预订两次。 抱歉时间/日期转换,但我已经习惯了Oracle的TRUNC并且不得不快速搜索MySQL版本,我不知道为什么我认为你使用MySQL虽然:-D
INSERT INTO PARKING_VIOLATION(Id, DateIssued, Description, Cost, VehicleRecieved)
(SELECT NULL,CURRENT_TIMESTAMP,'Invalid Parking Pass','75', VEHICLE.Id
FROM SPACE
INNER JOIN VEHICLE ON (SPACE.OccupiedBy=VEHICLE.Id)
WHERE VEHICLE.PassId <> SPACE.PassRequired)
WHERE VehicleRecieved NOT IN(
SELECT VehicleReceived FROM PARKING_VIOLATION
WHERE DATE_FORMAT(FROM_UNIXTIME(DateIssued), '%e %b %Y') = DATE_FORMAT(FROM_UNIXTIME(CURRENT_TIMESTAMP), '%e %b %Y')
);