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 originalQuery OK, 0 rows affected (0.12 sec)
-> ('en medio una palabra mas'), ('al final una palabra'),
-> ('no contiene la frase'), ('una no palabra está en orden');
Query OK, 5 rows affected (0.07 sec)
+------------------------------+
| campo |
+------------------------------+
| una palabra al inicio |
| en medio una palabra mas |
| al final una palabra |
| una
no palabra está en orden
| +------------------------------+
+--------------------------+
| campo |
+--------------------------+
| una palabra al inicio |
| en medio una palabra mas |
| al final una palabra |
+--------------------------+
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
+------------------------------+
| campo |
+------------------------------+
| una palabra al inicio |
| en medio una palabra mas |
| al final una palabra |
| una
no palabra está en orden
| +------------------------------+
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 las
Funciones de búsqueda de texto completo (Full-Text)
Estoy seguro que te puede servir.
Saludos
Leo.