[firebase-br] Como efetuar uma pesquisa em campo concatenado ||
paulosxs Yahoo!
paulosxs em yahoo.com.br
Seg Set 17 10:18:41 -03 2007
1) Supondo que você queira uma localização exata é simples:
select
case
when not (p.grade='S') then
p.descricao
else
p.descricao
||' '||coalesce(pg.identificacao,'')
||' '||coalesce(pg.parametro,'')
end descricao_geral
from produtos p
left outer join produtos_grade pg on pg.is_produto=p.id_produto
where p.descricao||' '||coalesce(pg.identificacao,'') = 'CALÇA JEANS TAM 40'
2) Por outro lado, caso você queira uma localização por semelhança, o mais simples é usar os campos Descricao e Identificacao separadamente para a pesquisa:
select
case
when not (p.grade='S') then
p.descricao
else
p.descricao
||' '||coalesce(pg.identificacao,'')
||' '||coalesce(pg.parametro,'')
end descricao_geral
from produtos p
left outer join produtos_grade pg on pg.is_produto=p.id_produto
where p.descricao like :Descricao and coalesce(pg.identificacao,'') like :Identificacao
É possível fazer como você explicou, mas seria necessário uma checagem por semelhança de sentença, isto é, por exemplo, localizar um registro em que Descricao||' '||Identificacao seja semelhante a 'CALÇA JEANS TAM 40'. Mas, a localização por semelhança é um processo mais complexo.
Arlei F. Farnetani Junior escreveu:
> Pessoal, imagine que eu tenha seguinte situação
>
> Tabela - Produtos
> Tabela - Produtos_Grade
>
> eu tenho em Produtos o campo DESCRICAO (60)
> e tenho em Produtos_Grade o campo identificacao (30) e parametro (10)
>
> supondo que existam produtos que tenham grades e outros não, mas onde
> eu queira listá-los todos num dbgrid só...
>
>
> select
> case
> when not (p.grade='S') then p.descricao
> else
> p.descricao||' '||coalesce(pg.identificacao,'')||'
> '||coalesce(pg.parametro,'')
> end descricao_geral
> from produtos p
> left outer join produtos_grade pg
> on pg.is_produto=p.id_produto
>
>
> imagine que sairia assim:
> CALÇA JEANS TAM 40 MASCULINO
> CALÇA JEANS TAM 42 MASCULINO
> CALÇA JEANS TAM 44 MASCULINO
>
> ONDE CALÇA JEANS = coluna DESCRICAO da tabela PRODUTOS
> TAM 40 = coluna IDENTIFICACAO da tabela PRODUTOS_GRADE
> MASCULINO = coluna PARAMETRO da tabela PRODUTOS_GRADE
>
> como faço para pesquisar nesta tabela
> caso o usuario pesquise pela descrição: CALÇA JEANS TAM 40
>
> visto que este campo não existe??? Existe algum jeito???
>
>
>
>
>
>
> ______________________________________________
> 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