Ciao a tutti, sto cercando di eseguire questa View relativa alla tabella sottostante
LISTA_FILIALI_CON_MUTUI_ATTIVI(NomeFiliale, Numero) -> calcola, per ogni filiale, il numero di mutui con stato ATTIVO sottoscritti da utenti di quella filiale.
DROP DATABASE IF EXISTS CASAMUTUO;
CREATE DATABASE CASAMUTUO;
USE CASAMUTUO;
#Creo le table ed inserisco i vincoli di integrità referenziale al loro interno
CREATE TABLE `FILIALE` (
`Nome` varchar(30) PRIMARY KEY,
`Via` varchar(30),
`Citta` varchar(30),
`NumeroClienti` int DEFAULT 0
) ENGINE=InnoDB;
CREATE TABLE `CLIENTE` (
`Email` varchar(30) PRIMARY KEY,
`Nome` varchar(30),
`Cognome` varchar(30),
`AnnoNascita` int,
`NomeFiliale` varchar(30),
FOREIGN KEY (NomeFiliale) REFERENCES Filiale(Nome)
) ENGINE=InnoDB;
CREATE TABLE `IMMOBILE` (
`Codice` varchar(30) PRIMARY KEY,
`Via` varchar(30) NOT NULL,
`Citta` varchar(30) NOT NULL,
`AnnoFabbricazione` int,
`Tipologia` ENUM("APPARTAMENTO", "CASA_SINGOLA")
) ENGINE=InnoDB;
CREATE TABLE `MUTUO` (
`Codice` varchar(30) PRIMARY KEY,
`EmailCliente` varchar(30),
`CodiceImmobile` varchar(30),
`DataAvvio` DateTime,
`ImportoTotale` int NOT NULL,
`Stato` ENUM("APERTO", "ATTIVO", "SALDATO") DEFAULT "APERTO",
FOREIGN KEY (EmailCliente) REFERENCES Cliente(Email) ON DELETE CASCADE,
FOREIGN KEY (CodiceImmobile) REFERENCES Immobile(Codice)
) ENGINE=InnoDB;
CREATE TABLE `RATA` (
`Numero` int AUTO_INCREMENT PRIMARY KEY,
`CodiceMutuo` varchar(30),
`Data` Datetime,
`Importo` int NOT NULL,
FOREIGN KEY (CodiceMutuo) REFERENCES Mutuo(Codice) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE `APPUNTAMENTO` (
`Emailcliente` varchar(30),
`NomeFiliale` varchar(30),
`Data` DateTime,
PRIMARY KEY(`EmailCliente`, `NomeFiliale`, `Data`),
FOREIGN KEY (EmailCliente) REFERENCES Cliente(Email) ON DELETE CASCADE,
FOREIGN KEY (NomeFiliale) REFERENCES Filiale(Nome)
) ENGINE=InnoDB;
#trigger a)
DELIMITER $
CREATE TRIGGER CambiaStatoMutuo
AFTER INSERT ON RATA
FOR EACH ROW
BEGIN
IF((SELECT SUM (Importo) FROM RATA) >= Mutuo.ImportoTotale) THEN
UPDATE MUTUO SET Stato = "SALDATO";
END IF;
END $
DELIMITER ;
#trigger b)
DELIMITER $
CREATE TRIGGER IncrementaNumeroClienti
AFTER INSERT ON CLIENTE
FOR EACH ROW
BEGIN
UPDATE FILIALE SET NumeroClienti=NumeroClienti+1;
END $
DELIMITER ;
#trigger c)
DELIMITER $
CREATE TRIGGER DecrementaNumeroClienti
AFTER DELETE ON CLIENTE
FOR EACH ROW
BEGIN
UPDATE FILIALE SET NumeroClienti=NumeroClienti-1;
END $
DELIMITER ;
#Popolo le tabelle
INSERT INTO FILIALE (Nome, Via, Citta, NumeroClienti) VALUES ("Margherita","Giardini Margherita", "Bologna", DEFAULT);
INSERT INTO FILIALE (Nome, Via, Citta, NumeroClienti) VALUES ("Corticella1","Via di Corticella 2", "Bologna", DEFAULT);
INSERT INTO FILIALE (Nome, Via, Citta, NumeroClienti) VALUES ("Imola1","Piazza Garibaldi", "Imola", DEFAULT);
INSERT INTO FILIALE (Nome, Via, Citta, NumeroClienti) VALUES ("Saragozza1","Via Saragozza 4", "Bologna", DEFAULT);
INSERT INTO CLIENTE VALUES ("michele.bianchi@email.it","Michele","Bianchi", 1980, "Margherita");
INSERT INTO CLIENTE VALUES ("maria.rossi@email.it","Maria","Rossi", 2000, "Margherita");
INSERT INTO CLIENTE VALUES ("dario.verdi@email.it","Dario","Verdi", 2001, "Margherita");
INSERT INTO CLIENTE VALUES ("michela.neri@email.it","Michela","Neri", 1965, "Corticella1");
INSERT INTO CLIENTE VALUES ("giovanni.viola@email.it","Giovanni","Viola", 1975, "Corticella1");
INSERT INTO CLIENTE VALUES ("sara.indaco@email.it","Sara","Indaco", 1977, "Imola1");
INSERT INTO CLIENTE VALUES ("manuela.arancio@email.it","Manuela","Arancio", 1978, "Saragozza1");
INSERT INTO IMMOBILE VALUES ("I0","Via Murri 3","Bologna",1960,"APPARTAMENTO");
INSERT INTO IMMOBILE VALUES ("I1","Via Zamboni 1","Bologna",1956,"APPARTAMENTO");
INSERT INTO IMMOBILE VALUES ("I2","Via Ugo Bassi","Bologna",1966,"APPARTAMENTO");
INSERT INTO IMMOBILE VALUES ("I3","Via Mazzini","Imola",1968,"CASA_SINGOLA");
INSERT INTO IMMOBILE VALUES ("I4","Via Siepelunga 1","Bologna",1988,"CASA_SINGOLA");