Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/07/2012, 13:28
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: Consulta anidada

Es un problema de lógica proposicional.
Debes separar las condiciones con paréntesis para que sean evaluadas correctamente:
Código MySQL:
Ver original
  1. FROM `directorio`
  2.     (`titulo` LIKE '%hotel%'
  3.     OR `descripcion` LIKE '%hotel%'
  4.     OR `tags` LIKE '%hotel%')
  5.     AND `activo`=1;

No te olvdes que en el OR, basta conque uno de ellos sea verdadero para que toda la proposición sea verdadera, sin importar el resto.
El AND actúa como condicional sólo con el último parametro del OR, pero no con los anteriores.
Lo que pusiste sería igual a:
Código MySQL:
Ver original
  1. FROM `directorio`
  2.     `titulo` LIKE '%hotel%'
  3.     OR `descripcion` LIKE '%hotel%'
  4.     OR (`tags` LIKE '%hotel%' AND `activo`=1);
Es decir que sólo se consideran al mismo tiempo los tags y si está activo, pero devolverá todas las concidencias en titulo y descripción.
¿Se comprende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)