[firebase-br] Melhorar consulta com SQL aninhado - Firebird 1.5

Joel do Prado Junior big.rid.listas em gmail.com
Qui Ago 22 16:45:01 -03 2013


experimente ir por este caminho:

select
   v.codigo,
   v.nome
from vendedores v
left join pedidosven p on p.vendedor=v.codigo
where
   (pvendedor is null) and
   (v.status in ('Ativa', 'Inativa'))

Em 22/08/2013 16:27, Felipe Aron escreveu:
> PessoALL, estou utilizando o Firebird 1.5.
>
> Preciso de uma consulta que me retorne vendedoras (locais), agrupadas por
> representante, que não tiveram pedido feito numa determinada filial.
>
> A grosso modo fiz o resultado das vendedoras com SQL aninhado mas esse tipo
> de SQL fica muito lento:
>
> *select distinct*
> *       vend.codigo,*
> *       vend.nome,*
> *
> *
> *from vendedores vend*
> *
> *
> *where vend.representante = 179*
> *  and vend.status in ('Ativa', 'Inativa')*
> *  and vend.codigo NOT IN (*
> *
> *
> *        select distinct(ped.vendedor)*
> *          from pedidosven ped*
> *               join vendedores vend on ped.vendedor = vend.codigo*
> *         where ped.origem = 12 /* FILIAL */*
> *           and vend.status in ('Ativa', 'Inativa')*
> *  )*
> *
> *
> *order by vend.nome*
>
> Fiz uma SQL que retorna um "array" das vendedoras que já tiveram pedidos na
> filial e uso esse array para filtrar as vendedoras que não constam aqui.
>
> Achei além de demorado, deselegante, gostaria da opinião de vocês pra
> melhorar essa rotina, preciso expandir meus conhecimentos.
>





Mais detalhes sobre a lista de discussão lista