Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Лабораторна робота № 20, Ткаченко А. Р.

ЕкК-20004б
1. Необхідно написати SQL запит на оновлення рядків у таблиці EventPlan. Для
цього запит повинен для кожного плану (в таблиці EventPlan) підрахувати
кількість пунктів виконання (в таблиці EventPlanLine) та записати в колонку
Lines (таблиці EventPlan). Це потрібно зробити одним запитом. Подати знімок
екрану з оновленими даними в таблиці.
UPDATE EventPlan
SET `Lines` = COALESCE((
SELECT COUNT(*) AS NumLines
FROM EventPlanLine
WHERE EventPlanLine.PlanNo = EventPlan.PlanNo GROUP BY EventPlanLine.PlanNo),
0)
WHERE PlanNo IN (
SELECT PlanNo FROM (
SELECT EventPlan.PlanNo
FROM EventPlan
LEFT JOIN EventPlanLine
ON EventPlan.PlanNo = EventPlanLine.PlanNo) AS Plans )

2. Необхідно написати тригер до таблиці EventPlanLine, який буде реагувати на


внесення нових даних до цієї таблиці. Тригер повинен підрахувати наявну
кількість пунктів виконання для події, для якої щойно було внесено новий
пункт (чи кілька пунктів) та записати отримане число в колонку Lines таблиці
EventPlan. Подати знімок екрану зі збереженим ригером.
DELIMITER //
CREATE TRIGGER EventPlanLine_CountLines AFTER INSERT ON
EventPlanLine FOR EACH ROW BEGIN
UPDATE EventPlan SET `Lines` = (
SELECT COUNT(*) AS NumLines FROM EventPlanLine
WHERE PlanNo = NEW.PlanNo GROUP BY PlanNo)
WHERE PlanNo = NEW.PlanNo;
END //
DELIMITER ;
3. Внести до таблиці EventPlanLine нові дані (див. таблицю нижче). Перший рядок
- одним окремим запитом. Інші три рядки - іншим одним окремим запитом.
Подати знімок екрану з таблицею EventPlanLine, де видно внесені дані. А також,
знімок екрану з таблицею EventPlan, де видно змінене число кількості пунктів
виконання. Знімки екрану зафіксувати окремо після кожно запиту на додавання.
INSERT INTO EventPlanLine (PlanNo, LineNo, TimeStart, TimeEnd, NumberFld, LocNo,
ResNo)
VALUES ("P349", 2, "12:00", "16:00", 3, "L101", "R101")

INSERT INTO EventPlanLine (PlanNo, LineNo, TimeStart, TimeEnd, NumberFld, LocNo,


ResNo)
VALUES ("P349", 3, "12:00", "12:30", 1, "L101", "R102"),
("P349", 4, "13:00", "15:00", 1, "L103", "R105"),
("P349", 5, "15:30", "16:30", 2, "L101", "R104")
EventPlan

You might also like