DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getProblems`(IN vIsTodayRelative tinyint(1)) BEGIN /** * Calcula los problemas para un conjunto de tickets. * Agrupados por ticket * * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular * @return tmp.ticket_problems */ CALL sale_getProblems(vIsTodayRelative); CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_problems (PRIMARY KEY (ticketFk)) ENGINE = MEMORY SELECT ticketFk, MAX(isFreezed) isFreezed, MAX(risk) risk, MAX(hasHighRisk) hasHighRisk, MAX(hasTicketRequest) hasTicketRequest, MAX(itemShortage) itemShortage, MIN(isTaxDataChecked) isTaxDataChecked, MAX(hasComponentLack) hasComponentLack, MAX(isTooLittle) isTooLittle, MAX(itemDelay) itemDelay, MAX(hasRounding) hasRounding, MAX(itemLost) itemLost, 0 totalProblems FROM tmp.sale_problems GROUP BY ticketFk; UPDATE tmp.ticket_problems tp SET tp.totalProblems = ( (tp.isFreezed) + IF(tp.risk,TRUE, FALSE) + (tp.hasTicketRequest) + (tp.isTaxDataChecked = 0) + (tp.hasComponentLack) + (tp.itemDelay) + (tp.isTooLittle) + (tp.itemLost) + (tp.hasRounding) + (tp.itemShortage) ); DROP TEMPORARY TABLE tmp.sale_problems; END$$ DELIMITER ;