1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
CREATE TRIGGER visits_insert_t
BEFORE INSERT ON Visits
FOR EACH ROW
BEGIN
UPDATE Rollercoasters R, (
SELECT AVG(nbVisit) AS visParJour, id_attraction
FROM (
SELECT Count(*) AS nbVisit, R1.id_attraction, DAY(V1.QueueEntranceTime) AS jours
FROM Visits V1
JOIN Rollercoasters R1
ON V1.id_attraction = R1.id_attraction
GROUP BY R1.id_attraction, jours
) AS td
GROUP BY id_attraction
) AS moyenneParAttraction
SET attendance_rate = visParJour
WHERE R.id_attraction = moyenneParAttraction.id_attraction;
UPDATE Manege M, (
SELECT AVG(nbVisit) AS visParJour, id_attraction
FROM (
SELECT Count(*) AS nbVisit, M1.id_attraction, DAY(V1.QueueEntranceTime) AS jours
FROM Visits V1
JOIN Manege M1
ON V1.id_attraction = M1.id_attraction
GROUP BY M1.id_attraction, jours
) AS td
GROUP BY id_attraction
) AS moyenneParAttraction
SET attendance_rate = visParJour
WHERE M.id_attraction = moyenneParAttraction.id_attraction;
IF (NEW.AttractionTime IS NULL)
THEN
UPDATE Queue
SET Occupation = Occupation+1
WHERE id_attraction = NEW.id_attraction;
UPDATE Queue Q, (
SELECT AVG(Attente) AS AttenteMoyenne, id_attraction
FROM (
SELECT (DATEDIFF (mi,V2.AttractionTime,V2.QueueEntranceTime)/Q1.Occupation) AS Attente
FROM Visits V2
JOIN Queue Q1
ON V2.id_attraction = Q1.id_attraction)
WHERE AttractionTime IS NOT NULL
) AS AttenteMoyenneParAttraction
SET Timeperperson=AttenteMoyenneParAttraction
WHERE Q.id_attraction=AttenteMoyenneParAttraction.id_attraction;
END IF;
END
CREATE TRIGGER visits_update_t
BEFORE UPDATE ON Visits
FOR EACH ROW
BEGIN
IF (OLD.AttractionTime IS NULL AND NEW.AttractionTime IS NOT NULL)
THEN
UPDATE Queue
SET Occupation = Occupation - 1
WHERE id_attraction = NEW.id_attraction;
END IF;
END |
Partager