[firebase-br] Order By Por tabela Diferente [RESOLVIDO]

Wilson Rosa wsrosa em gmail.com
Seg Abr 23 17:22:33 -03 2012


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
>



Mais detalhes sobre a lista de discussão lista