· 6 years ago · Sep 07, 2019, 03:54 PM
1DROP TABLE IF EXISTS anni;
2CREATE TEMPORARY TABLE anni(Anno INT NOT NULL PRIMARY KEY);
3INSERT INTO anni VALUES(2005);
4INSERT INTO anni VALUES(2006);
5INSERT INTO anni VALUES(2007);
6INSERT INTO anni VALUES(2008);
7INSERT INTO anni VALUES(2009);
8INSERT INTO anni VALUES(2010);
9INSERT INTO anni VALUES(2011);
10INSERT INTO anni VALUES(2012);
11INSERT INTO anni VALUES(2013);
12INSERT INTO anni VALUES(2014);
13INSERT INTO anni VALUES(2015);
14INSERT INTO anni VALUES(2016);
15INSERT INTO anni VALUES(2017);
16INSERT INTO anni VALUES(2018);
17INSERT INTO anni VALUES(2019);
18
19SELECT A.*
20FROM
21anni A
22NATURAL LEFT OUTER JOIN
23(
24SELECT YEAR(E.DataEsordio) AS Anno
25FROM esordio E
26WHERE EXISTS ( -- il paziente deve avere massimo due patologie
27 SELECT *
28 FROM esordio E2 INNER JOIN patologia PA ON E2.Patologia = PA.Nome
29 WHERE E2.DataEsordio < E.DataEsordio
30 AND (E2.DataGuarigione IS NULL OR E2.DataGuarigione > E.DataEsordio)
31 AND E2.Paziente = E.Paziente
32 AND PA.ParteCorpo = 'Cuore'
33 GROUP BY E2.Paziente
34 HAVING COUNT(*) <= 2 AND MAX(E2.Gravita) <= 5
35 )
36 AND E.Patologia = 'Scompenso cardiaco'
37GROUP BY YEAR(E.DataEsordio)
38) AS D
39WHERE D.Anno IS NULL;