none
Busca por texto RRS feed

  • Pergunta

  • Olá!

    Gostaria de ajuda na formulação de uma query!

    Tenho 3 tabelas. Bairro, servico e cliente

    Na tabela de Cliente tenho o Id do Bairro e o Id do servico vinculado a esse cliente...

    Como posso fazer uma query que busque por uma expressão. Tipo Digamos que tenha um cliente que fica no flamengo e seu tipo de serviço é academia...

    Ai na busca digito 'academia flamengo'

    Eu verificaria pelo nome do bairro, serviço e empresa...

    Eu fazendo os Joins da vida e usando o like essa busca não me retorna nada...

    Tentei usar o CONTAINS e FREETEXT mas não consegui usando mais de uma tabela..no caso os Joins...

    Alguém tem alguma dica??

     

    Obrigado!


    Desenvolvedor .NET
    segunda-feira, 31 de janeiro de 2011 01:36

Respostas

  • Sim, isso devido ao fato de serem colunas diferentes, se fosse na mesma coluna não seria necessario.
    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta Jorge Juninho segunda-feira, 31 de janeiro de 2011 12:44
    • Não Marcado como Resposta Jorge Juninho segunda-feira, 31 de janeiro de 2011 15:38
    • Marcado como Resposta Jorge Juninho terça-feira, 1 de fevereiro de 2011 00:24
    segunda-feira, 31 de janeiro de 2011 12:40
    Moderador

Todas as Respostas

  • Jorge,

     

    No caso o CONTAINS e o FREETEXT são comandos do Full-Text search, ha em sua tabela um FTS?

    COM FULL-TEXT SEARCH:

    WHERE CONTAINS(a.bairro,'flamengo') and CONTAINS(b.servico,'Academia')

    Neste caso, o % é dispensavel, mas lembre-se que é preciso ter o Full-Text search criado em sua coluna.

     

    SEM FULL-TEXT SEARCH:

    No caso do like, voce deve separar campo por campo e tente utilizar o '%', exemplo:

    Where a.bairro like '%Flamengo%' and b.serviço like '%academia%'.


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    segunda-feira, 31 de janeiro de 2011 10:11
    Moderador
  • bom dia Jorge

    se vc tem as palavras sepadas o CONTAINS pode ajuadar.

    create table Bairro (idBairro int primary key, nomeBai varchar(20))
    create table servico (idServico int primary key, nomeSer varchar(20))
    create table cliente (idCliente int primary key, nomeCli varchar(60), idBairro int, idServico int)
    go
    insert into Bairro values(1,'Flamengo')
    insert into Bairro values(2,'São Paulo')
    insert into servico values(1,'Academia')
    insert into servico values(2,'Padaria')
    insert into cliente values(1,'SQL em Forma',1,1)
    insert into cliente values(2,'Padoca SQL',2,2)
    insert into cliente values(3,'SQL em Forma',2,1)
    go
    
    SELECT nomeCli, nomeBai,nomeSer
    FROM cliente a 
    inner join servico b on a.idServico=b.idServico
    inner join Bairro c On a.idBairro=c.idBairro
    WHERE CONTAINS(nomeSer, ' "Academia"')
    and CONTAINS(nomeBai, ' "Flamengo"');
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 31 de janeiro de 2011 10:36
    Moderador
  • Olá! Bom dia!

    Entendi sua explicação, porém isso quer dizer então que não há como eu fazer uma busca por expressão? Tipo 'Academia Flamengo' ou 'Academia no flamengo' etc...

    Eu tenho sempre que separar as palavras?


    Desenvolvedor .NET
    segunda-feira, 31 de janeiro de 2011 11:47
  • Sim, isso devido ao fato de serem colunas diferentes, se fosse na mesma coluna não seria necessario.
    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta Jorge Juninho segunda-feira, 31 de janeiro de 2011 12:44
    • Não Marcado como Resposta Jorge Juninho segunda-feira, 31 de janeiro de 2011 15:38
    • Marcado como Resposta Jorge Juninho terça-feira, 1 de fevereiro de 2011 00:24
    segunda-feira, 31 de janeiro de 2011 12:40
    Moderador
  • Mesmo se eu fizer por exemplo assim:

     

    where  CONTAINS((nomeSer + '  ' + nomeBai ,'Academia flamengo'))

     

     


    Desenvolvedor .NET
    segunda-feira, 31 de janeiro de 2011 15:41