[firebase-br] Duvida em Select

Eduardo Bahiense eduardo em icontroller.com.br
Qua Jan 24 20:08:40 -03 2007


Olá Alisson

Os 8 primeiros digitos do CNPJ dão exclusividade ao número. Assim, se 
você pedir
WHERE CNPJ STARTING WITH '00.002.003', virão todas as empresas, matriz e 
filiais que compartilham este número.

No caso de várias empresas, você pode continuar usando IN desta forma:
WHERE SUBSTRING CNPJ FROM 1 FOR 10 IN ('00.002.003', 00.005.098, ...)

No segundo caso, você vai ter pouca otimização em função do SUBSTRING. 
Você pode contornar isso se houverem outros itens do WHERE que tenham 
apoio de índices, ou criar um campo só para guardar os 8 primeiros 
dígitos e criar um índice nele. Existe também no FB 2 a possibilidade de 
índice com expressão, mas não li o suficiente sobre isto para te ajudar.

Abs, Eduardo

Alisson escreveu:
> Eae Moçada...
> 
> Gostaria de pedir a ajuda dos colegas no seguinte:
> 
> hoje em dia.. tenho esta select funcionando (apenas exemplo.)
> 
> Select Sum(Valores)
>    From Tabela
> Where Empresa in (1,2,3,4... etc);
> 
> Nessa caso, o usuario pode selecionar 1 ou mais empresas, ai montarei essa 
> clausula where com o in ou nao...
> maravilha...
> 
> me problema vem agora.
> 
> existem empresas que possuem filiais, e quando isso ocorrer, preciso que 
> neste select venha somado matriz + Filial.
> mas hj em dia a unica informaçao que tenho sobre matriz e filial é o CNPJ 
> ... ou seja.
> o cnpj da Matriz sendo 00.002.003/0001-01 e da Filial sendo 
> 00.002.003/0002-01 por exemplo
> 
> Gostaria de pedir uma ajuda de vcs, caso jah tenha precisado de algo 
> parecido com isso.
> o que eu realmente devo fazer...??? buscar apenas pelos 8 primeiros digitos 
> do CNPJ e comparar isso, ou se eu devo montar algum tipo de tabela de 
> filiais
> e cadastra-las nessa tabela ???
> 
> Reparem que nao tenho a intençao de montar uma SP. quero isso tudo em 
> Select, pois estou utilizando em relatorios entao soh quero montar somas...
> claro q em ultimo caso recorreria a SP, mas tentando nao recorrer.. hehehehe
> 
> espero q ter sido claro...
> 
> Obrigado.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista