· 6 years ago · Sep 07, 2019, 03:32 PM
1/*
2ESERICZIO 1
3*/
4
5DROP PROCEDURE IF EXISTS do_query;
6DELIMITER $$
7CREATE PROCEDURE do_query()
8BEGIN
9 DROP TEMPORARY TABLE IF EXISTS rv;
10 CREATE TEMPORARY TABLE rv(Anno INT);
11
12 SET @year_ = 2015;
13
14 WHILE @year_ <= YEAR(CURRENT_DATE) DO
15
16 IF NOT EXISTS
17 (
18 SELECT *
19 FROM esordio e
20 WHERE YEAR(e.DataEsordio) = @year_ AND
21 e.Patologia='Scompenso cardiaco' AND
22 e.Paziente IN (
23 SELECT e1.Paziente
24 FROM esordio e1 INNER JOIN
25 patologia p ON e1.Patologia=p.Nome
26 WHERE YEAR(e.DataEsordio) < @year_ AND -- prima di quell anno erano gia affetti
27 (e.DataGuarigione IS NULL OR YEAR(e.DataGuarigione) > @year_) AND -- quindi non erano ancora guariti
28 p.SettoreMedico ='Cardiologia'
29 GROUP BY e1.Paziente
30 HAVING COUNT(*) <= 2 AND MAX(e1.Gravita) <= 5
31 )
32 ) THEN
33 INSERT INTO rv VALUES (@year_);
34 END IF;
35
36
37 SET @year_ = @year_ + 1;
38 END WHILE;
39
40 SELECT * FROM rv;
41
42END $$
43DELIMITER ;
44
45CALL do_query();