[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