-- -- Struttura della tabella `bloccati` -- CREATE TABLE IF NOT EXISTS `bloccati` ( `anno` int(11) NOT NULL, `avanzato` enum('s','n') NOT NULL DEFAULT 'n' ) DEFAULT CHARSET=utf8 ENGINE = InnoDB; -- -- Converto a InnoDB tutte le tabelle -- ALTER TABLE `avcp_ditta` ENGINE = InnoDB; ALTER TABLE `avcp_ld` ENGINE = InnoDB; ALTER TABLE `avcp_lotto` ENGINE = InnoDB; ALTER TABLE `avcp_ruoloType` ENGINE = InnoDB; ALTER TABLE `avcp_sceltaContraenteType` ENGINE = InnoDB; -- -- Indexes for table `avcp_ditta` -- Ignoro l'errore 1061 (Duplicate key name) e 1091 (indice non esistente) -- La chiamo e poi la cancello delimiter $$ CREATE PROCEDURE addditta () begin declare continue handler for 1060 begin end; declare continue handler for 1061 begin end; declare continue handler for 1091 begin end; ALTER TABLE `avcp_ditta` ADD `flag` VARCHAR(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; ALTER TABLE `avcp_ditta` DROP INDEX `codiceFiscale`; ALTER TABLE `avcp_ditta` ADD UNIQUE KEY `ditta` (`codiceFiscale`), ADD UNIQUE KEY `cf-rs` (`codiceFiscale`,`ragioneSociale`); end$$ call addditta()$$ delimiter ; DROP PROCEDURE IF EXISTS `addditta`; -- -- Indexes for table `avcp_ld` -- Ignoro l'errore 1061 (Duplicate key name). La chiamo e poi la cancello -- delimiter $$ CREATE PROCEDURE addld () begin declare continue handler for 1061 begin end; ALTER TABLE `avcp_ld` ADD KEY `gara-ditta` (`cig`,`codiceFiscale`), ADD KEY `codiceFiscale` (`codiceFiscale`), ADD KEY `id-funz` (`id`,`funzione`); end$$ call addld()$$ delimiter ; DROP PROCEDURE IF EXISTS `addld`; -- -- Indexes for table `avcp_lotto` -- Ignoro l'errore 1068 (Multiple primary key defined). La chiamo e poi la cancello -- delimiter $$ CREATE PROCEDURE addannouser () begin declare continue handler for 1068 begin end; declare continue handler for 1061 begin end; ALTER TABLE `avcp_lotto` ADD KEY `anno-user` (`anno`,`userins`); end$$ call addannouser()$$ delimiter ; DROP PROCEDURE IF EXISTS `addannouser`; -- -- Crea la procedura addflag che aggiunge il campo flag se non esistente -- Ignoro l'errore 1060 (il campo esiste giĆ ). La chiamo e poi la cancello -- delimiter $$ CREATE PROCEDURE addflag () begin declare continue handler for 1060 begin end; ALTER TABLE `avcp_lotto` add `flag` varchar(8) DEFAULT NULL, DEFAULT CHARSET=UTF8; ALTER TABLE `avcp_ld` ADD `flag` VARCHAR(8) NULL DEFAULT NULL, DEFAULT CHARSET=UTF8; end$$ call addflag()$$ delimiter ; DROP PROCEDURE IF EXISTS `addflag`; -- -------------------------------------------------------- -- -- Elimino le viste superflue o che vanno ricreate -- DROP VIEW IF EXISTS `avcp_vista_ditte`; DROP VIEW IF EXISTS `avcp_vista_gare`; DROP VIEW IF EXISTS `avcp_xml`; -- -------------------------------------------------------- -- -- Struttura per la vista `avcp_vista_ditte` -- CREATE VIEW `avcp_vista_ditte` AS select `d`.`codiceFiscale` AS `codiceFiscale`,`d`.`ragioneSociale` AS `ragioneSociale`,`d`.`estero` AS `estero`,`d`.`flag` AS `flag`,`d`.`userins` AS `userins`,(select count(0) from `avcp_ld` `ldl` where (`d`.`codiceFiscale` = `ldl`.`codiceFiscale`)) AS `partecipa`,group_concat(`ld`.`id` separator 'xxxxx') AS `id_aggiudicatari` from (`avcp_ditta` `d` left join `avcp_ld` `ld` on((`d`.`codiceFiscale` = `ld`.`codiceFiscale`))) group by `d`.`codiceFiscale` order by `d`.`ragioneSociale`; -- -------------------------------------------------------- -- -- Struttura per la vista `avcp_vista_gare` -- CREATE VIEW `avcp_vista_gare` AS select `l`.`id` AS `id`,`l`.`cig` AS `cig`,`l`.`oggetto` AS `oggetto`,`l`.`sceltaContraente` AS `sceltaContraente`,`l`.`importoAggiudicazione` AS `importoAggiudicazione`,`l`.`importoSommeLiquidate` AS `importoSommeLiquidate`,(select count(0) from `avcp_ld` `ldl` where ((`l`.`id` = `ldl`.`id`) and (`ldl`.`funzione` = '01-PARTECIPANTE'))) AS `partecipanti`,(select count(0) from `avcp_ld` `ldl` where ((`l`.`id` = `ldl`.`id`) and (`ldl`.`funzione` = '02-AGGIUDICATARIO'))) AS `aggiudicatari`,`l`.`userins` AS `userins`,group_concat(`ditta`.`ragioneSociale` separator 'xxxxx') AS `nome_aggiudicatari` from ((`avcp_lotto` `l` left join `avcp_ld` `ld` on(((`l`.`id` = `ld`.`id`) and (`ld`.`funzione` = '02-AGGIUDICATARIO')))) left join `avcp_ditta` `ditta` on((`ld`.`codiceFiscale` = `ditta`.`codiceFiscale`))) group by `l`.`id` order by `l`.`anno`,`l`.`id`;