[firebase-br] Problema com select

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


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





Mais detalhes sobre a lista de discussão lista