DROP TABLE PRODOTTI;
DROP TABLE PACCHETTI;
DROP TABLE COMPOSIZIONI;

CREATE TABLE PRODOTTI (
	CODP CHAR(5) NOT NULL PRIMARY KEY,
	DESCRIZIONE VARCHAR(30) NOT NULL,
	PREZZO DEC(6,2) NOT NULL CHECK (PREZZO > 0)	);

CREATE TABLE PACCHETTI (
	PID CHAR(4) NOT NULL PRIMARY KEY,
	PREZZO DEC(6,2) NOT NULL CHECK (PREZZO > 0),
	DA DATE NOT NULL,
	A DATE NOT NULL,
	CONSTRAINT PERIODO CHECK (DA <= A)		);

CREATE TABLE COMPOSIZIONI(
	PID CHAR(4) NOT NULL REFERENCES PACCHETTI,
	CODP CHAR(5) NOT NULL REFERENCES PRODOTTI,
	NUMPEZZI INT NOT NULL CHECK (NUMPEZZI > 0),
	PRIMARY KEY (PID,CODP)				);


INSERT INTO PRODOTTI VALUES
('P0998','TV LCD 40',150.00),
('P0999','TV LCD 42',230.00),
('P1000','SMART TV LCD 50',500.00),
('P1001','SMART TV LCD 65',900.00),
('P1102','SISTEMA HOME THEATRE',250.00),
('P1103','SISTEMA HOME THEATRE TOP',750.00),
('P2004','LETTORE 3D BLU-RAY XYZ',150.00),
('P3005','OCCHIALI 3D WZH (1 PAIO)',20.00)
;




INSERT INTO PACCHETTI VALUES
('B001',600.00,'12/01/2017','23/03/2017'),
('B002',1200.00,'12/01/2017','23/03/2017'),
('B003',1100.00,'15/02/2017','21/05/2017'),
('B004',1500.00,'15/02/2017','21/05/2017'),
('B005',200.00,'01/01/2017','31/12/2017'),
('B006',400.00,'01/01/2017','31/12/2017')

;

INSERT INTO COMPOSIZIONI VALUES
('B001','P1000',1),
('B001','P1102',1),

('B002','P1000',1),
('B002','P1103',1),

('B003','P1001',1),
('B003','P1102',1),

('B004','P1001',1),
('B004','P1103',1),

('B005','P2004',1),
('B005','P3005',4),

('B006','P0999',1),
('B006','P2004',1),
('B006','P3005',6)

;

-- 2.1
Select P.CodP
From Prodotti P
Where not exists 
 ( Select *
   From Composizioni C join Pacchetti T on (c.PID = T.PID)
   where c.Codp = P.codp
   and  P.Prezzo < 0.5*T.Prezzo )
and exists (select * from composizioni c
             where c.Codp = P.codp );







GRANT SELECT ON PRODOTTI TO PUBLIC;
GRANT SELECT ON PACCHETTI TO PUBLIC;
GRANT SELECT ON COMPOSIZIONI TO PUBLIC;

