[firebase-br] SUBSELECT
Edvaldo (bol)
evgomes em bol.com.br
Sex Abr 1 10:09:18 -03 2005
Não só o FireBird.. como em qualquer outro banco...
----- Original Message -----
From: "Eduardo Jedliczka" <eduardo em gerasoft.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, April 01, 2005 8:34 AM
Subject: Re: [firebase-br] SUBSELECT
Rogerio,
O FB só pode retornar um único campo num subselect.
Então, ficaria algo mais ou menos assim:
Select cliente.clie_nome,
( select cep.id_cidade from cep where cliente.id_cep = cep.id_cep) as
id_cidade,
( select cep.id_logradouro from cep where cliente.id_cep = cep.id_cep) as
id_logradouro,
( select cep.id_tipo_logradouro from cep where cliente.id_cep = cep.id_cep)
as id_tipo_logradouro,
blablabla...
>From sua tabela
where blablabla
Porém como ele faz um select para cada campo, isto pode derrubar o seu
servidor.
O Inner Join só fica lento se mal usado, se o seu "plan" ficar apenas com
PKs e FKs ou Índices bons (sem natural) ele fica muito rápido...
Outra alternativa é criar uma SP que busca os selects individualmente (o que
acho desperdício), ou esperar até o ano que vem para utilizar o FB 2.0.
[s]
==========================
Eduardo Jedliczka
Gerasoft Informática
Apucarana - Pr
==========================
----- Original Message -----
From: "Rogerio" <wroger em terra.com.br>
To: <Lista em firebase.com.br>
Sent: Thursday, March 31, 2005 9:00 PM
Subject: [firebase-br] SUBSELECT
> Pessoal... Gostaria de fazer uma select com varias subselects... para nao
> usar o inner,left,right join... pois, acredito ser mais rapido usar a
> subselect... OK ?
> Exemplo.. Criar uma select para pegar os dados de um endereco do cliente
> onde o cadastro de clientes nao tem os dados de endereco, ou seja, estao
em
> uma tabela "cep" por exemplo, onde cep tem apenas os id's dos campos
> cidade,bairro,logradouro,tipo de logradouro.
> entao teriamos.
>
> Cliente Cep Bairro Cidade Logradouro Tipo_logradouro
> id_cep id_cep id_bairro id_cidade id_logradouro
> id_tipo_logradouro
> Numero id_bairro Bairro_nome Cidade_nome logradouro_nome
> tipo_logradouro_nome
> id_cidade
> id_logradouro
> id_estado
> id_tipo_logradouro
>
> COmo fazer esta select sem usar inner join ?
>
> Por que tudo isto, o cadastro de clientes tem cerva de 10.000 clientes, o
> cep +200.000 pois é do
> Brasil inteiro...
>
> Tentei fazer, no ibexpert, o seguinte
>
> 1 - select cliente.clie_nome,
> 2 - select cep.id_cidade, cep.id_bairro, cep.id_logradouro,
> cep.id_tipo_logradouro
> where cliente.id_cep = cep.id_cep) ,
> 3 - (select bairro_nome
> from bairro
> where cep.cep_id_bairro = bairro.id_bairro),
> 4 - (select cidade_nome
> from cidade
> where cidade.id_cidade = cep.id_cidade)
> >From cliente
>
> porem logo de cara nao aceita a 2 linha de comando... entao o que fazer ?
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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://search.gmane.org/search.php?group=firebase
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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://search.gmane.org/search.php?group=rebase
Mais detalhes sobre a lista de discussão lista