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

Problema con buscador

Estas en el tema de Problema con buscador en el foro de Mysql en Foros del Web. Hola, consegui un buscador por ahi navegando y funciona en cierta manera bien, la cuestion es el busca en 3 campos que son name, sub1 ...
  #1 (permalink)  
Antiguo 13/10/2011, 10:31
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 8 meses
Puntos: 1
Problema con buscador

Hola, consegui un buscador por ahi navegando y funciona en cierta manera bien, la cuestion es el busca en 3 campos que son name, sub1 y sub 2

si yo busco un valor q esta en cualquiera de los campos funciona
pero no funciona si yo escribo completo todo, por ejempo, tengo
name = carlos
sub 1 = canada
sub 2 = alberta

si yo busco por carlos o por canada o por alberta encuentra, pero si busco por carlos alberta canada, no encuentra, aqui esta la consulta cual puede ser el error?

$resp = mysql_query("SELECT type_reg,name,description,sub1,sub2 FROM reg WHERE name LIKE '%".$busqueda."%' or sub1 LIKE '%".$busqueda."%' or sub2 LIKE '%".$busqueda."%'") or die (mysql_error());


GRACIAS POR SU COLABORACION
  #2 (permalink)  
Antiguo 13/10/2011, 11:15
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Problema con buscador

Hola cabeto_1972:

Creo que te estás confundiendo en cuanto al funcionamiento del operador LIKE... cuanto tu pones algo como esto:

Código:
campo LIKE '%una palabra%'
Lo que estás indicando sería traer todos los campos que contengan la frase "una palabra":

Código MySQL:
Ver original
  1. mysql> create table Ejemplo (campo varchar (40));
  2. Query OK, 0 rows affected (0.12 sec)
  3.  
  4. mysql> insert into ejemplo values ('una palabra al inicio'),
  5.     -> ('en medio una palabra mas'), ('al final una palabra'),
  6.     -> ('no contiene la frase'), ('una no palabra está en orden');
  7. Query OK, 5 rows affected (0.07 sec)
  8. Records: 5  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> select * from ejemplo;
  11. +------------------------------+
  12. | campo                        |
  13. +------------------------------+
  14. | una palabra al inicio        |
  15. | en medio una palabra mas     |
  16. | al final una palabra         |
  17. | no contiene la frase         |
  18. | una no palabra está en orden |
  19. +------------------------------+
  20. 5 rows in set (0.00 sec)
  21.  
  22. mysql> select * from ejemplo where campo like '%una palabra%';
  23. +--------------------------+
  24. | campo                    |
  25. +--------------------------+
  26. | una palabra al inicio    |
  27. | en medio una palabra mas |
  28. | al final una palabra     |
  29. +--------------------------+
  30. 3 rows in set (0.09 sec)

observa que el 4to. registro no se muestra porque NO CONTIENE LA FRASE, en el caso del 5to. registro tampoco se muestra, pues aunque contiene las dos palabras que componen la frase ESTAS NO SE ENCUENTRAN JUNTAS.

Para hacer funcionar la búsqueda con un Like tendrías que hacerlo más o menos así:

Código MySQL:
Ver original
  1. mysql> select * from ejemplo where campo like '%una%' and campo like '%palabra%';
  2.  
  3. +------------------------------+
  4. | campo                        |
  5. +------------------------------+
  6. | una palabra al inicio        |
  7. | en medio una palabra mas     |
  8. | al final una palabra         |
  9. | una no palabra está en orden |
  10. +------------------------------+
  11. 4 rows in set (0.00 sec)

Es decir descomponiendo la búsqueda en palabras sueltas. Esto por supuesto puede no ser muy eficiente, sobre todo porque al al realizar la búsqueda sobre tres campos, primero tendrías que concatenarlos o hacer la comparación sobre cada uno de ellos:

Código:
Concat(name, sub1, sub2) like '%carlos%' and
Concat(name, sub1, sub2) like '%canada%' and
Concat(name, sub1, sub2) like '%alberta%'
Te recomiendo que le des un vistazo a lasFunciones de búsqueda de texto completo (Full-Text)

Estoy seguro que te puede servir.

Saludos
Leo.
  #3 (permalink)  
Antiguo 13/10/2011, 11:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problema con buscador

Listo Leo, muchisimas gracias.

Etiquetas: campos, query, select, sql, buscadores
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 13:42.