[firebase-br] Problema com select

Rodrigo Alves de Freitas rodrigo em solucoeseinformatica.com.br
Seg Ago 7 09:55:23 -03 2006


Então o select que eu te passei vai resolver esse problema... usando o 
SUBSTR e a cláusula IN, você vai pegar todos os registros que começarem com 
'A', 'B', ou 'C' ou a primeira letra das linhas que forem retornadas na 
subquery.

[]'s

Rodrigo A. de Freitas
Análise & Desenvolvimento
------------------------------------------
Soluções & Informática
www.solucoeseinformatica.com.br

(11) 4996-4422 / 4996-2039
----- Original Message ----- 
From: "Pablo Cunha" <cunhapablo em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, August 07, 2006 9:39 AM
Subject: Re: [firebase-br] Problema com select


Rodrigo, obrigado pela a ajuda, mas o que acontece é o seguinte na tabela de
endereço eu tenho registros assim:

ID_END    NM_DESCRICAO_END
1                   A
2                   B
3                   C
4                   A.00.020.00.15
5                   A.10.020.00.15
6                   B.18.034.05.01
7                   B.02.040.03.25
8                   C.00.020.05.03
9                   C.12.045.43.15

Ai o que acontece, o o segundo select retorna os registros 1 e o 2 , e o
primeiro select tem que retornar os endereços que iniciam com o resultado do
segundo select, ou seja, se o segundo select retornou os registro 1 e 2 que
equivale ao "A" e "B" o primeiro select tem que retornar os registro
4,5,6,7.



----- Original Message ----- 
From: "Rodrigo Alves de Freitas" <rodrigo em solucoeseinformatica.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, August 07, 2006 9:28 AM
Subject: Re: [firebase-br] Problema com select


Hmm, pra fazer bunitinho, eu faria uma procedure retornando um resultset,
mas se vc quer trazer os endereços que iniciam com a primeira letra, dá pra
fazer algo assim:

Select e3.id_end, e3.nm_descricao_end
from   endereco e3
where  SUBSTR(e3.nm_descricao_end, 1, 1) IN
(SELECT SUBSTR(e.NM_DESCRICAO_END, 1, 1)
     FROM
        produto_class_produto pcp,
        endereco_class_endereco ece,
        classifica_produto_end cpe,
        endereco e
     WHERE pcp.id_class_produto = cpe.id_class_produto
     and   cpe.id_class_end = ece.id_class_end
     and   ece.id_end = e.id_end
     and   pcp.id_produto = 8
     and   (pcp.cd_modalidade_class = 1 or pcp.cd_modalidade_class = 2))

Lembrando que a UDF Substr está declarada na IB_UDF.dll

Rodrigo A. de Freitas
Análise & Desenvolvimento
------------------------------------------
Soluções & Informática
www.solucoeseinformatica.com.br

(11) 4996-4422 / 4996-2039



----- Original Message ----- 
From: "Pablo Cunha" <cunhapablo em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, August 07, 2006 8:45 AM
Subject: [firebase-br] Problema com select


Vê alguem pode me ajudar, eu tenho esse select que está ai embaixo, é o
seguinte, eu tenho na tabela de endereço a descrição de cada endereço, que
nada mais é que ele todo escrito.
Note que o select abaixo está divido em dois selects, o primeiro está
utilizando o Like para que assim ele possa me retornar todos os endereços
que iniciam com um determinado caractér, e esse determinado caractér é
retornado no segundo select, só que esse segundo select tem vezes que ele
pode retornar 1 registro ou mais registros, e o que acontece, quando ele
retorna 2 registros ele não consegue fazer o select (o conjunto dos dois)
porque ele dá a seguinte mensagem: "multiple rows in singleton select" ai eu
coloco o First 1 para que ele me retorna apenas 1 registro e ai funciona
agora se eu tiro o First 1 ele vai me retornar mais de um registro ai ele dá
a mensagem. Resumindo: no primeiro select ele quer pegar todos os que
iniciam com a letra que o segundo select retornou, só que se o segundo
select retorna mais de 2 registro dá problema. Como eu poderia resolver
isso?


Select e3.id_end, e3.nm_descricao_end
from   endereco e3
where  e3.nm_descricao_end like
(SELECT
     first 1 e.NM_DESCRICAO_END
     FROM
        produto_class_produto pcp,
        endereco_class_endereco ece,
        classifica_produto_end cpe,
        endereco e
     WHERE pcp.id_class_produto = cpe.id_class_produto
     and   cpe.id_class_end = ece.id_class_end
     and   ece.id_end = e.id_end
     and   pcp.id_produto = 8
     and   (pcp.cd_modalidade_class = 1 or pcp.cd_modalidade_class = 2)) ||
'%'
______________________________________________
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


______________________________________________
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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.10.7/409 - Release Date: 4/8/2006






_______________________________________________________
Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/


______________________________________________
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