problemas en consulta para MySQL

GranLebowsky
18 de Mayo del 2002
Hola. Tengo un problema que no sé solucionar. Resulta que la consulta que os pondré a continuación no funciona como debería, pues muestra todos los registros sin hacer caso de la condición de la consulta.

SELECT * FROM base_de_datos WHERE campo1 LIKE '%palabra1%' OR campo1 LIKE 'palabra1' AND campo2='palabra2' limit 10

¿Cuál puede ser el fallo?

infierno
18 de Mayo del 2002
Según veo tu consulta entiendo que puedes querer dos cosas, y en cualquiera de ellas creo que tu problema son los paréntesis (de todas formas el segundo LIKE que haces con el 'campo1' no tiene sentido, ya que lo estás incluyendo en el primero). Así que suponiendo que es ésto lo que realmente quieres hacer:
1) Que lo que quieres es que el 'campo1' contenga la 'palabra1', ó que el 'campo1' sea igual a la 'palabra1' y a su vez el 'campo2' sea igual a la 'palabra2' (pero ya te digo que en el primer LIKE ya contienes la segunda parte de la claúsula WHERE, a no ser que cambies la segunda 'palabra1' por otra distinta). En este caso la query sería:

SELECT * FROM base_de_datos WHERE campo1 LIKE '%palabra1%' OR (campo1 LIKE 'palabra1' AND campo2='palabra2')

SELECT * FROM base_de_datos WHERE campo1 LIKE '%palabra1%' OR (campo1 LIKE 'palabra¿?' AND campo2='palabra2')

2) Que lo que quieres es que el 'campo1' contenga la 'palabra1' ó que el 'campo1' sea igual a la 'palabra1'(esta segunda 'palabra1' entiendo que será distinta a la primera), y que a su vez el 'campo2' sea igual a la 'palabra2'. En este caso la query sería:

SELECT * FROM base_de_datos WHERE (campo1 LIKE '%palabra1%' OR campo1 LIKE 'palabra1') AND campo2='palabra2'

SELECT * FROM base_de_datos WHERE (campo1 LIKE '%palabra1%' OR campo1 LIKE 'palabra¿?') AND campo2='palabra2'