› Fóruns › SQL e PL/SQL › SELECT, COM VARIOS SUBSELECTS, OU TABELA TEMPORARIA › SELECT, COM VARIOS SUBSELECTS, OU TABELA TEMPORARIA
Oi alvear, analisando sua consulta eu consegui cortar bastante coisa.
Transformei todas as subquerys em uma só e joguei na cláusula from…
Acho que ficou mais legível e deve melhorar um pouco a performance também.
SELECT cadprocesso.idprocesso,
cadprocesso.processo,
cadprocesso.nrovara,
cadprocesso.vara,
cadprocesso.idcliente,
cadprocesso.idreu,
cadprocesso.uf,
cadprocesso.cidade,
cadcli.razsoc,
cadreu.nome,
ultimo.idprococor,
ultimo.idprocesso,
ultimo.idocorrencia,
ultimo.data,
ultimo.ocorrencia1,
ultimo.ocorrencia2
FROM cadprocesso,
(SELECT idprococor,
idprocesso,
idocorrencia,
data,
ocorrencia1,
ocorrencia2
FROM cadprococor
WHERE idprococor IN
(SELECT MAX(idprococor)
FROM cadprococor
GROUP BY idprocesso)
) ultimo,
cadagen JOIN cadreu ON cadreu.idreu = cadprocesso.idreu
JOIN cadcli ON cadcli.idcliente = cadprocesso.idcliente AND cadprocesso.idcliente = '001'
WHERE ultimo.idprocesso = cadprocesso.idprocesso
AND ultimo.idprocor ''
AND ultimo.ocorrencia1 LIKE '%01/2010 %'
AND (ultimo.idocorrencia = cadagen.parametro1
OR ultimo.idocorrencia = cadagen.parametro2);
Não testei então pode dar algum erro bobo de sintaxe… qualquer coisa posta aqui…
Se tiver testando no Oracle e não no MySQL, você ainda pode isolar a subquery dentro da clausula WITH como o Sancler já falou.