Pular para o conteúdo

Fóruns SQL e PL/SQL SELECT, COM VARIOS SUBSELECTS, OU TABELA TEMPORARIA SELECT, COM VARIOS SUBSELECTS, OU TABELA TEMPORARIA

#91943
burga
Participante

    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.