Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Buscar varias palabras con like

Estas en el tema de Buscar varias palabras con like en el foro de Mysql en Foros del Web. Hola a todos, tengo un problema con un codigo en mysql, al buscar con LIKE solo me permite realizar la busqueda de una sola palabra. ...
  #1 (permalink)  
Antiguo 12/02/2012, 21:55
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Pregunta Buscar varias palabras con like

Hola a todos, tengo un problema con un codigo en mysql, al buscar con LIKE solo me permite realizar la busqueda de una sola palabra.

Cuando busco una sola palabra funciona perfecto, pero cuando busco 2 o mas deja de darme resultados o me da muchisimos menos.

Hay alguna solución para esto??

Muchas gracias a todos y espero que puedan ayudarme, no se si hay alguna solución para esto, les dejo el código:

Código PHP:
SELECT sbcUnion.webTitulosbcUnion.webDescripcionsbcUnion.weburl
FROM
(SELECT webTitulowebDescripcionweburlas Priorweb_idad 
FROM webs
WHERE webTitulo LIKE 
'%$frase%'
UNION ALL
SELECT webTitulo
webDescripcionweburlas Priorweb_idad 
FROM webs
WHERE webDescripcion LIKE 
'%$frase%'
AND web_id NOT IN (SELECT web_id 
* * * * * * * * * * * * FROM webs
* * * * * * * * * * * * WHERE webTitulo LIKE '%$frase%')
UNION ALL
SELECT webTitulo
webDescripcionweburlas Priorweb_idad 
FROM webs
WHERE weburl LIKE 
'%$frase%'
AND web_id NOT IN (SELECT web_id 
* * * * * * * * * * * * FROM webs
* * * * * * * * * * * * WHERE webTitulo LIKE '%$frase%'
* * * * * * * * * * * * OR webDescripcion LIKE '%$frase%')
UNION ALL
SELECT webTitulo
webDescripcionweburlas Priorweb_idad 
FROM webs
WHERE webkeywords LIKE 
'%$frase%'
AND web_id NOT IN (SELECT web_id 
* * * * * * * * * * * * FROM webs
* * * * * * * * * * * * WHERE webTitulo LIKE '%$frase%'
* * * * * * * * * * * * OR webDescripcion LIKE '%$frase%'
* * * * * * * * * * * * OR weburl LIKE '%$frase%')) as sbcUnion
ORDER BY sbcUnion
.Priorweb_idad,sbcUnion.webTitulosbcUnion.webDescripcionsbcUnion.weburl 
Saludos a todos!!
  #2 (permalink)  
Antiguo 13/02/2012, 02:04
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Buscar varias palabras con like

Utiliza paréntesis para dar a cada expresión la prioridad que le corresponde:

select * from table where active = 1 AND (palabra LIKE '%esto%' OR palabra LIKE 'estootro%');

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 13/02/2012, 10:55
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Buscar varias palabras con like

gracias por la respuesta, pero no entiendo muy bien como se aplicaría ese codigo, lo que hice fue algo así:

select webTitulo from webs where webTitulo = 1 AND (palabra LIKE '%$frase%' OR palabra LIKE '$frase%');

Pero en lo de palabra lo cambie por webTitulo, pero seguramente no es así. Al finalizar probe el código pero sigue funcionando igual que antes, osea no me muestra frases de mas de 1 palabra.

no entiendo muy bien que debería ir en lugar palabra, porque con $frase no funciona ya que no tiene ninguna función ahi.

Saludos, espero que puedas ayudarme =)
  #4 (permalink)  
Antiguo 13/02/2012, 11:27
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Buscar varias palabras con like

Hola xarmagedonx:

Lo que quiso decir repara2 es que para poder utilizar la función LIKE con una frase, lo que tienes que hacer es separar esa frase y poner cada palabra por separado.

Imagina que quieres buscar la frase "hola mundo" entonces tu consulta debería quedar así:

Código MySQL:
Ver original
  1. select webTitulo
  2. from webs
  3. where webTitulo = 1 AND (palabra LIKE '%hola%' OR palabra LIKE '%mundo%');

El poner OR implicaría que pueda tener solo parte de la frase, podrías cambiar por AND para a que la descripción contenga ambas palabras, esto por supuesto puede no ser óptimo si tus frases son bastante largas.

Sería conveniente que le dieras un vistazo a Búsquedas de texto completo, es posible que se adecuen mejor en lo que quieres hacer.

Saludos
Leo.
  #5 (permalink)  
Antiguo 13/02/2012, 11:59
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Buscar varias palabras con like

Gracias por aclararme las dudas, pero al reemplazar por ejemplo '%hola%' y '%mundo%' por '%$frase%' no creo que funcione (ahora estoy probando como puedo hacerlo funcionar).

Otro código que tengo es un indice full text pero el problema es que no busca palabras de menos de 4 letras y no ordena los resultados como estoy buscando.

Si no logro hacer que funcione el like con varias palabras me vuelvo al full text jeje.

Gracias!

EDITO: Pude resolverlo con la funcion explode() de php

Última edición por xarmagedonx; 13/02/2012 a las 21:28

Etiquetas: palabras, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.