Certa vez precisei criar um novo relatório para um cliente na qual envolveria varias consultas de tabelas distintas.
Vou demonstrar abaixo apenas um trecho do código para exemplificar a criação de uma tabela temporária no Mysql e como popular seus campos:
CREATE PROCEDURE `sp_relat_det`(var_datini varchar(10), var_datfim varchar(10) )
BEGIN
/* criando a tabela temporaria */
CREATE TEMPORARY TABLE relaTbltempFinal
(
datainc varchar(7),
novos int,
confirmados int
);
/* populando a tabela temporária a partir de um consulta*/
/* Essa consulta irá agrupar todos os pedidos realizados dentro do período informado pelo usuário*/
insert into relaTbltempFinal (datainc)
select date_format(datincped, ‘%m/%Y’) as ‘datainc’
from tbpedido
where datincped between var_datini and var_datfim
group by date_format(datincped, ‘%m/%Y’);
/* Aqui eu realizo outra consulta para atualizar os dados dos demais campos ‘novos’ com um join em uma sub-query com a tabela temporaria */
update
relaTbltempFinal
set novos = (select count(datincped) as total from tbseguro inner join tbpedidosdet on tbpedidosdet.idseg = tbseguro.idseg inner join tbpedido on tbpedido.idped = tbpedidosdet.idped where
tbpedido.tipPed = 1 and date_format(datincped, ‘%m/%Y’) = relaTbltempFinal.datainc ) ;
select * relaTbltempFinal;
END $$
DELIMITER ;
Resultado final:
call sp_relat_det (‘2015-01-01’, ‘2015-02-28’);
datainc – novos
01/2015 – 10
02/2015 – 15
Deixe um comentário