Pular para o conteúdo
  • Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por andersonti.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #83292
    andersonti
    Participante

      Olá, tenho uma tela com um campo de busca, quero fazer o seguinte

      ex: no meu banco tenho um cara chamado “coletor” quando digito coletor trago todos os caras que tem coletor no meu banco, até ai tudo ok, e se digitar “seringa” traz todos os caras também, ok, mas se digitar no campo de busca “coletor seringa” ele não traz nenhum nem outro.

      Obs: quero trazer tudo que estiver relacionado ao que foi digitado caso exista

      sou iniciante e não estou conseguindo solucionar o problema, dei uma pesquisada e encontrei um texto que falava do recurso de Full-text-search do banco. que pode me dá resultados melhores.

      desde já obrigado.

      #83293
      Ricardo Portilho Proni
      Participante

        Não entendi muito bem.
        Coloca um DESC desta tabela aqui, e algumas linhas de exemplo.

        #83294
        andersonti
        Participante

          [b]SELECT item_de_para.tip_item AS TIP_ITEM,
          item.cod_modelo AS COD_MODELO,
          item_de_para.seq_prestadora_servico AS SEQ_PRESTADORA_SERVICO,
          item_de_para.cod_item_prestadora AS COD_ITEM_PRESTADORA,
          item_de_para.des_item_prestadora AS DES_ITEM_PRESTADORA,
          item.cod_item AS COD_ITEM_BRADESCO,
          item.des_item AS DES_ITEM_BRADESCO
          FROM item_de_para,item

          WHERE item_de_para.seq_item = item.seq_item
          AND item_de_para.seq_convenio = 1
          AND item_de_para.seq_prestadora_servico = 2
          AND upper(item.tip_item) = ‘MATERIAL’
          AND upper(item.cod_modelo) = upper(‘SIMPRO’)
          AND ((upper(item_de_para.cod_item_prestadora) like upper(ltrim(‘%SONDA%’))
          OR upper(item_de_para.des_item_prestadora) like upper(‘%SONDA%’)))
          order by item.cod_item

          resposta

          MATERIAL SIMPRO 2 314459 SONDA ESTOMACAL N.18 (LEVINE) 4850109 SONDA ESTOMACAL NASOGASTRICA NR.12 INF.CURTA EMB.PLAST.10UNID (MARK MED)
          MATERIAL SIMPRO 2 314878 SONDA ASPIRACAO TRAQUEAL N.12 4850171 SONDA ASPIRACAO TRAQUEAL NR.12 EMB.PLAST.10UNID (MARK MED)
          MATERIAL SIMPRO 2 314996 SONDA ASPIRACAO TRAQUEAL N 16 54673 SONDA ASPIRACAO TRAQUEAL TP.SPYRA EST.16F 50CM SIMS-PORTEX 6400.16 (C.FERNANDE)
          MATERIAL SIMPRO 2 314885 SONDA ASPIRACAO TRAQUEAL N.14 89009 SONDA ASPIRACAO TRAQUEAL NR.14 EMB.P.G.C. (CAM-PLAST)
          MATERIAL SIMPRO 2 314330 SONDA FOLEY 2 VIAS N.16 98117 SONDA FOLEY 5CC 2VIAS NR.16 LATEX BORRACHA NATURAL SILIC.MED FOLEY MF2-16-5 (MEDGOLDMAN)
          MATERIAL SIMPRO 2 314434 SONDA FOLEY 3 VIAS N.18 98129 SONDA FOLEY 30CC 3VIAS NR.18 LATEX BORRACHA NATURAL SILIC.MED FOLEY MF3-18-30 (MEDGOLDMAN)
          MATERIAL SIMPRO 2 314441 SONDA FOLEY 2 VIAS N.18 98130 SONDA FOLEY 5CC 3VIAS NR.18 LATEX BORRACHA NATURAL SILIC.MED FOLEY MF3-18-5 (MEDGOLDMAN)

          mas se eu faço essa consulta, no campo de busca eu digito sonda e bisturi
          ele não traz nada

          SELECT item_de_para.tip_item AS TIP_ITEM,
          item.cod_modelo AS COD_MODELO,
          item_de_para.seq_prestadora_servico AS SEQ_PRESTADORA_SERVICO,
          item_de_para.cod_item_prestadora AS COD_ITEM_PRESTADORA,
          item_de_para.des_item_prestadora AS DES_ITEM_PRESTADORA,
          item.cod_item AS COD_ITEM_BRADESCO,
          item.des_item AS DES_ITEM_BRADESCO
          FROM item_de_para,item

          WHERE item_de_para.seq_item = item.seq_item
          AND item_de_para.seq_convenio = 1
          AND item_de_para.seq_prestadora_servico = 2
          AND upper(item.tip_item) = ‘MATERIAL’
          AND upper(item.cod_modelo) = upper(‘SIMPRO’)
          AND ((upper(item_de_para.cod_item_prestadora) like upper(ltrim(‘%SONDA BISTURI%’))
          OR upper(item_de_para.des_item_prestadora) like upper(‘%SONDA BISTURI %’)))
          order by item.cod_item
          [/b]

          [/b]

          #83295
          Rodrigo Mesquita
          Participante

            a palavra sempre vai ter SONDA e BISTURI justos?

            se não coloque %SONDA%BISTURI%

            #83296
            andersonti
            Participante

              Não, na verdade tem um campo de texto, no banco eu tenho vários itens, sonda e bisturi é um exemplo.

              imagine um campo de texto e eu quero procurar esses dois produtos, mas eu não quero digitar sonda e pesquisar tudo que estiver sonda e depois bisturi para pegar tudo que tem bisturi quero digitar sonda e bisturi ou qualquer outro item e trazer do banco tu que estiver relacionado com as itens que digitei no campo texto.

              #83297
              andersonti
              Participante

                e testei também o %SONDA%BISTURI% e não funcionou

                #83298
                Manoel872
                Participante

                  Testa usando esse comando desta forma:

                  SELECT item_de_para.tip_item AS TIP_ITEM,
                  item.cod_modelo AS COD_MODELO,
                  item_de_para.seq_prestadora_servico AS SEQ_PRESTADORA_SERVICO,
                  item_de_para.cod_item_prestadora AS COD_ITEM_PRESTADORA,
                  item_de_para.des_item_prestadora AS DES_ITEM_PRESTADORA,
                  item.cod_item AS COD_ITEM_BRADESCO,
                  item.des_item AS DES_ITEM_BRADESCO
                  FROM item_de_para,item

                  WHERE item_de_para.seq_item = item.seq_item
                  AND item_de_para.seq_convenio = 1
                  AND item_de_para.seq_prestadora_servico = 2
                  AND upper(item.tip_item) = ‘MATERIAL’
                  AND upper(item.cod_modelo) = upper(‘SIMPRO’)
                  AND ((upper(item_de_para.cod_item_prestadora) like upper(ltrim(‘%SONDA%’))
                  OR upper(item_de_para.des_item_prestadora) like upper(‘%SONDA %’)
                  OR upper(item_de_para.cod_item_prestadora) like upper(ltrim(‘%BISTURI%’))
                  OR upper(item_de_para.des_item_prestadora) like upper(‘%BISTURI %’)
                  ))

                  #83302
                  andersonti
                  Participante

                    Resolvi meu problema dessa forma

                    if(pItemDeParaVO.getCodDes() != null && !"".equals(pItemDeParaVO.getCodDes().trim())){
                    StringTokenizer tokenizer = new StringTokenizer(pItemDeParaVO.getCodDes(), " ");
                    String filtroNom = "";
                    String filtroCod = "";

                    while(tokenizer.hasMoreTokens()) {
                    palavra = tokenizer.nextToken();

                    if(!"".equals(filtroNom)) {
                    filtroNom += "n OR ";
                    }
                    filtroNom += "n (upper(item.des_item)) like upper('%"+palavra+"%')";

                    if(!"".equals(filtroCod)) {
                    filtroCod += "n OR ";
                    }
                    filtroCod += "n to_char(item.cod_item) = ltrim('%"+palavra+"%') ";

                    }

                    strSQL.append("n AND ( " + filtroNom + " OR " + filtroCod + " ) " + "n");
                    }

                    Alterei meu código e a consulta ficou dessa forma

                    SELECT item.cod_item COD_ITEM,
                    item.des_item DES_ITEM,
                    item_para.cod_item COD_ITEM_PARA,
                    item_para.des_item DES_ITEM_PARA,
                    item.seq_item SEQ_ITEM,
                    item_para.seq_item SEQ_ITEM_PARA
                    FROM item,
                    item item_para,
                    tabela_modelo
                    WHERE item.seq_item_para = item_para.seq_item(+)
                    AND item.seq_item_para IS NULL
                    AND item.seq_convenio = tabela_modelo.seq_convenio
                    AND item.tip_item = tabela_modelo.tip_item
                    AND item.cod_modelo = tabela_modelo.cod_modelo
                    AND item.seq_convenio = 1
                    AND item.tip_item = 'TAXA'
                    AND item.cod_modelo = 'OPERADORA'
                    AND (
                    (upper(item.des_item)) like upper('%taxa%')
                    OR
                    (upper(item.des_item)) like upper('%tala%')
                    OR
                    (upper(item.des_item)) like upper('%bandeja%') OR
                    to_char(item.cod_item) = ltrim('%taxa%')
                    OR
                    to_char(item.cod_item) = ltrim('%tala%')
                    OR
                    to_char(item.cod_item) = ltrim('%bandeja%') )

                    ORDER BY 2,1

                    eu nem tinha visto a opinião do amigo Manoel872 mas é básicamente isso.

                    muito obrigado pela atenção.
                    Valeu
                    .

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.
                  plugins premium WordPress