[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