[firebase-br] SUBSELECT

Eduardo Jedliczka eduardo em gerasoft.com.br
Sex Abr 1 08:34:00 -03 2005


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
>
>





Mais detalhes sobre a lista de discussão lista