DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getWarnings`() BEGIN /** * Calcula las adventencias para un conjunto de tickets. * Agrupados por ticket * * @table tmp.sale_getWarnings(ticketFk) Identificadores de los tickets a calcular * @return tmp.ticket_warnings */ CREATE OR REPLACE TEMPORARY TABLE tSaleWarnings ( ticketFk INT(11), saleFk INT(11), isFragile INTEGER(1) DEFAULT 0, PRIMARY KEY (ticketFk, saleFk) ) ENGINE = MEMORY; -- Fragile INSERT INTO tSaleWarnings(ticketFk, saleFk, isFragile) SELECT tt.ticketFk, s.id, TRUE FROM tmp.sale_getWarnings tt LEFT JOIN sale s ON s.ticketFk = tt.ticketFk LEFT JOIN item i ON i.id = s.itemFk LEFT JOIN itemType it ON it.id = i.typeFk LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk WHERE dm.code IN ('AGENCY') AND it.isFragile; CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_warnings (PRIMARY KEY (ticketFk)) ENGINE = MEMORY SELECT sw.ticketFk, MAX(sw.isFragile) AS isFragile FROM tSaleWarnings sw GROUP BY sw.ticketFk; DROP TEMPORARY TABLE tSaleWarnings; END$$ DELIMITER ;