[firebase-br] Duvida SQL Consulta

Wilson Rosa wsrosa em gmail.com
Seg Jan 23 13:43:58 -03 2012


Pedro,

há dois fatores há considerar:

1º - Quando se quer trazer MAIS DE UM CAMPO de uma tabela, como você está
querendo, é mais performático fazer um JOIN. O sub-select só é vantajoso
quando se quer trazer APENAS UM CAMPO.

2º - Com dois sub-selects distintos que estão sendo feitos, você não tem a
certeza que o UF que ele trará em um sub-select é o da CIDADE que ele trará
noutro sub-select, já que os dois sub-selects não estão ligados, o que não
acontece quando se utiliza o JOIN.

Espero ter ajudado.

*Wilson Rosa
wsrosa em gmail.com
*
*
*



Em 23 de janeiro de 2012 11:47, Edson Marco <edmafer em gmail.com> escreveu:

> select
> from
> endereco e
> join cliente c on (c.cod_cliente = e.cod_cliente)
> where
> e.cidade = 'nome da cidade
> and
> c.nome = 'nome do cliente''
>
> Caso o cliente tiver mais de um endereço na mesma cidade e você só quer um,
> então coloca o FIRST ali.
>
> Quanto aos campos eu recomendo você por um a um no select (ex: c.nome,
> c.idade, e.cidade, e.bairro  e etc).
>
> E coloque as clausulas que estão faltando. Mas acho que funciona.
>
> 2012/1/23 Pedro Braga <bragaped em gmail.com>
>
> > Bom Dia a Todos,
> >
> > estou precisando fazer um Select onde relize a pesquisa pela Cidade
> contudo
> > o meu ambiente é
> >
> > Tabela Cliente - Preciso Retornar todas as Colunas.
> > Tabela Endereço - Preciso Retornar Apenas as Colunas (Cidade e UF)
> >
> > a SQL que uso hoje é
> >
> > select c.*,
> >    (select first 1 e.cidade from enderecos e where e.cod_empresa =
> > c.cod_empresa and e.cod_cliente=c.cod_cliente and e.tipo_endereco =
> > iif(c.tipo_cliente='J', 'COM', 'RES')) as cidade,
> >    (select first 1 e.uf from enderecos e where e.cod_empresa =
> > c.cod_empresa and e.cod_cliente=c.cod_cliente and e.tipo_endereco =
> > iif(c.tipo_cliente='J', 'COM', 'RES')) as uf_cidade
> > from cliente c
> > where c.nome like :nome
> > order by c.cod_cliente
> >
> > o que preciso é pesquisar pelo nome da cidade soh que o mesmo cliente
> pode
> > possuir N Endereçoes e soh devo trazer 1 algua sugestão?
> > outra coisa importante impossivel fazer isso via Procedure pois a SQL
> fica
> > em UM DATASET.
> >
> > Pedro E. Braga
> > (18) 8144-3939
> > ______________________________________________
> > 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
> >
>
>
>
> --
> /*
>  * Edson Marco Ferrari Junior
>  * edmafer em edmafer.com.br
>  * http://www.edmafer.com.br
>  */
> ______________________________________________
> 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