Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/10/2014, 18:49
kncerbero
 
Fecha de Ingreso: julio-2005
Mensajes: 9
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: determinar cual parámetro generó tal o cual resultado en SELECT LIKE

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No existe forma directa para obtener la información que quieres desde el SQL en si. Especialmente cuando usas una condición OR, ya que esta es una disyunción que es TRUE cuando al menos una de las dos condiciones lo es, por lo que no diferencia sobre cual devuelve datos.
Para lograr algo aproximado a lo que deseas tendrás que crear una consulta con UNOIN, donde en cada consulta busques exclusivamente por una de ambas condiciones. Y además deberá hacerlo con UNION ALL, para que permita devolver aquellos casos donde se cumplen ambas simultáneamente.
Código MySQL:
Ver original
  1. SELECT 'jabon' parametro, descripcion
  2. FROM productos
  3. WHERE descripcion LIKE '%jabon%'
  4. SELECT 'shampoo' parametro, descripcion
  5. FROM productos
  6. WHERE descripcion LIKE '%shampoo%'

La verdad es que lo que quieres buscar parece carecer de utilidad genérica. Da la impresión de que quieres lograr algún tipo de valorización estadística que no es propia del SQL. En todo caso se parece más a lo que se consigue usando indices FULLTEXT y MATCH() AGAINST(), donde si aplica un cálculo de relevancia de lo encontrado en la búsqueda.
LIKE es demasiado genérico, y además lo estás usando de modo ineficiente... Vas a hacer demasiados full table scan en tus queries.
tenes razon gnzsoloyo, mi busqueda es ineficiente, y va ser peor cuando crezca la BD, pensé en usar FULLTEXT pero como se trata de un campo VARCHAR de 30 solamente y no de un tipo TEXT con mucho texto...pensé que con LIKE bastaba.

ok voy a reformular mi código y optimizarlo, gracias gnzsoloyo por tu comentario!