- Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por andersonti.
-
AutorPosts
-
22 de outubro de 2008 às 3:40 pm #83292andersontiParticipante
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.
22 de outubro de 2008 às 3:46 pm #83293Ricardo Portilho ProniParticipanteNão entendi muito bem.
Coloca um DESC desta tabela aqui, e algumas linhas de exemplo.22 de outubro de 2008 às 3:56 pm #83294andersontiParticipante[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,itemWHERE 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_itemresposta
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 nadaSELECT 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,itemWHERE 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]
22 de outubro de 2008 às 3:59 pm #83295Rodrigo MesquitaParticipantea palavra sempre vai ter SONDA e BISTURI justos?
se não coloque %SONDA%BISTURI%
22 de outubro de 2008 às 4:09 pm #83296andersontiParticipanteNã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.
22 de outubro de 2008 às 4:11 pm #83297andersontiParticipantee testei também o %SONDA%BISTURI% e não funcionou
22 de outubro de 2008 às 5:31 pm #83298Manoel872ParticipanteTesta 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,itemWHERE 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 %’)
))22 de outubro de 2008 às 10:02 pm #83302andersontiParticipanteResolvi 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
. -
AutorPosts
- Você deve fazer login para responder a este tópico.