Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

999ANDRE999

Query de pesquisa

Mensagens Recomendadas

999ANDRE999

Boa tarde a todos,

Tenho um projeto em C# com uma ligação  uma BD postgres.
Nesse projeto tenho um campo de pesquisa para fazer um filtro a uma coluna de uma tabela e apresentar só os resultados pertendidos.

Precisava de ajuda para uma query onde pudesse pesquisar através de campos não seguidos.

Exemplo: Na tabela tenho "Tubo de cobre diametro 22"
Quero na pesquisa escrever "cobre 22" e o resultado retornar a linha "Tubo de cobre diametro 22" e tudo o que tenha as palavras "cobre" e "22"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Quebras as palavras pelo espaço e usas os operadores like e or e fazes um distinct para eliminar resultados duplicados.

select distinct *
from tabela
where descritivo like '%cobre%' 
or descrivito like '%22%'

Tem atenção que esta estratégia está longe de ser a que tem a melhor performance, mas se não tiveres muito registos pode ser perfeitamente viável.

  • Voto 2

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Voigt
22 horas atrás, 999ANDRE999 disse:

Quero na pesquisa escrever "cobre 22" e o resultado retornar a linha "Tubo de cobre diametro 22" e tudo o que tenha as palavras "cobre" e "22"

Ola...

outra ideia... apenas substituindo " " por "%" na string digitada pelo usuário.

select distinct *
from tabela
where descritivo like '%cobre%22%'

Atenciosamente

Ricardo

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999
35 minutos atrás, Ricardo Voigt disse:

Ola...

outra ideia... apenas substituindo " " por "%" na string digitada pelo usuário.


select distinct *
from tabela
where descritivo like '%cobre%22%'

Atenciosamente

Ricardo

boa ideia! vou testar!

Obrigado. :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6
On 11/22/2018 at 2:19 PM, Ricardo Voigt said:

Ola...

outra ideia... apenas substituindo " " por "%" na string digitada pelo usuário.


select distinct *
from tabela
where descritivo like '%cobre%22%'

Atenciosamente

Ricardo

Atenção que essa situação vai pesquisar apenas por ocorrências onde existam, no mesmo descritivo, a palavra "cobre" seguido da palavra "22" e não retorna como resultado as ocorrências "soltas" das mesmas.

Editado por M6
Clarificação da resposta.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6
On 11/22/2018 at 12:41 PM, 999ANDRE999 said:

Muito Obrigado pela ajuda M6.

Qual seria a melhor solução a teu ver?

A melhor solução é usares algo como Elastic Search: https://www.elastic.co/products/elasticsearch.

Se bem que poderás safar-te com um modelo mais simples, como por exemplo, teres as palavras indexadas numa tabela própria que faz referência ao id da tabela original.

Editado por M6

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.