[firebase-br] RES: Order By Por tabela Diferente [RESOLVIDO]
Zottis
bzottis em ig.com.br
Seg Abr 23 17:56:37 -03 2012
No caso da UF eu comi bola mesmo, mas
Eu não tenho queixa da velocidade, ele me traz quase 300 clientes em menos
de um segundo
Mas agradeço e com certeza vou testar
Valeu
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Wilson Rosa
Enviada em: segunda-feira, 23 de abril de 2012 17:23
Para: FireBase
Assunto: Re: [firebase-br] Order By Por tabela Diferente [RESOLVIDO]
Zottis,
Se você aceitar, aqui vai uma sugestão pra deixar este código um pouco mais
performático e melhorar o PLAN:
SELECT
...
cd.UF, /* Substituir o Sub-Select da UF */
...
Min(fm.DATA_COLETA) as Primeira_COLETA,
Max(fm.DATA_COLETA) as Ultima_COLETA,
...
FROM
Clientes c
INNER JOIN Cidades cd ON (cd.COD_CIDADE = c.COD_CIDADE)
INNER JOIN Rotas_Cliente r ON (r.COD_CLIENTE = c.COD_CLIENTE and
r.COD_ROTA_NOME = :VarRota) INNER JOIN Cidades_Rota cr ON (cr.COD_ROTA_NOME
= r.COD_ROTA_NOME and cr.COD_CIDADE = c.COD_CIDADE)
INNER JOIN Far_Mtr fm ON (fm.COD_CLIENTE = c.COD_CLIENTE) /* Sempre
que for buscar mais de 1 campo,
da mesma tabela com a mesma condição WHERE,
o JOIN é mais rápido que os SUB-SELECT's */ WHERE
c.DELETADO = 'N'
and c.ATIVO = 'S'
*Wilson Rosa
wsrosa em gmail.com
*
*
*
Em 23 de abril de 2012 16:58, Zottis <bzottis em ig.com.br> escreveu:
> Consegui assim:
>
>
>
>
>
> select c.COD_CLIENTE, c.DATA_CAD, c.COD_EMPRESA,
> c.NOME_FANTASIA, c.RAZAO_SOCIAL,
>
> c.NOME_MONTADO, c.COD_CIDADE, cd.cidade ,
> c.COD_AREA_ATUACAO, c.COD_TIPO_AREA,
>
> c.INICIO_CONTRATO, c.FINAL_CONTRATO,
c.INTERVALO_COLETA,
> c.TIPO_BOMBONA, c.FORMA_PGTO,
>
> c.VALOR_KILO, c.VALOR_KILO_EXCEDE, c.LIMITE_KILO,
> c.TAXA_RECOLHIMENTO, c.BOMBONA,
>
> c.QTD_COLETAS, c.COD_CLASSIF_RESIDUOS, c.VALOR_MENSAL,
> c.COD_CLIENTE_EMPRESA, c.PROXIMA_COLETA,
>
> c.SERASA, c.CENTRAL_COBRANCA, c.BLOQUEADO,
> c.INADIMPLENTE, c.COM_NOTA_FISCAL,
>
> c.com_comodato, c.contrato_retornado, c.cod_master,
> c.COD_DESTINO,
>
>
>
> (select Uf from Cidades where Cidades.Cod_cidade =
> C.Cod_cidade
> ) as UF,
>
> (select area from areas_atuacao where
> areas_Atuacao.cod_area_atuacao = C.Cod_area_atuacao ) as Area_Atuacao,
>
> (select TIPO_AREA from TIPO_AREA where
> TIPO_AREA.cod_TIPO_area =
> C.Cod_TIPO_area) as TIPO_Area,
>
> (select Classificacao from CLASSIF_RESIDUOS where
> CLASSIF_RESIDUOS.COD_Classificacao = C.COD_CLASSIF_RESIDUOS) as
> Classific_Resid,
>
> (select min(FAR_mtr.DATA_COLETA) from FAR_MTR where
> FAR_MTR.COD_CLIENTE = C.COD_Cliente) as Primeira_COLETA ,
>
> (select Max(FAR_MTR.DATA_COLETA) from FAR_MTR where
> FAR_MTR.COD_Cliente = C.COD_Cliente) as Ultima_COLETA,
>
> (select Count(*) from FAR_MTR where FAR_MTR.COD_CLIENTE =
> C.COD_Cliente and far_mtr.baixado = 'N' ) as MTR_ABERTA,
>
> (select Count(*) from FAR_MTR where FAR_MTR.COD_CLIENTE =
> C.COD_Cliente and far_mtr.cod_rota = :VarRota/*:VarRota_Atual*/) as
> MTR_ROTA,
>
>
>
> CR.ordem
>
> from Clientes c, rotas_cliente R, cidades cd, cidades_rota CR
>
> where c.DELETADO = 'N'
>
> and c.cod_cidade = cd.cod_cidade
>
> and c.cod_cliente = r.cod_cliente
>
> and CR.cod_rota = R.cod_rota_nome
>
> and CR.cod_cidade = C.cod_cidade
>
> and r.cod_rota_nome = :VarRota
>
> and c.ativo = 'S'
>
> order by CR.ordem
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista