Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/01/2014, 09:22
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: 16 años, 5 meses
Puntos: 2658
Respuesta: Mostrar columna virtual

Ni te va a andar jamás de esa forma...
Código MySQL:
Ver original
  1. (SELECT *
  2. FROM libros
  3. WHERE keywords LIKE '$busqueda'
  4. ORDER BY ventas ASC, volumen DESC)
  5.     *,
  6.     MATCH (keywords) AGAINST('$busqueda') AS relevancia
  7. FROM libros
  8. WHERE MATCH(keywords) AGAINST('$busqueda')
  9. ORDER BY relevancia DESC, ventas ASC, volumen DESC)
El problema es simplísimo visto así: Cada SELECT devuelve una cantidad diferente de campos, algo que es total y absolutamente ilegal.
Ambos deben tener la misma cantidad, y para ello en el primer SELECT debes agregar una columna ficticia (totalmente ficticia) que corresponda con la posición y tipo de datos del segundo SELECT:
Código MySQL:
Ver original
  1. (SELECT *, 0 relevancia
  2. FROM libros
  3. WHERE keywords LIKE '$busqueda'
  4. ORDER BY ventas ASC, volumen DESC)
  5.     *,
  6.     MATCH (keywords) AGAINST('$busqueda') relevancia
  7. FROM libros
  8. WHERE MATCH(keywords) AGAINST('$busqueda')
  9. ORDER BY relevancia DESC, ventas ASC, volumen DESC)
La consulta que usas debe estar devolviendo un error, sólo que sin duda no lo estás capturando, por lo que ni ten enteras de eso.
Pero eso es tema de programación, y por consecuencia OFF TOPIC acá.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 01/02/2014 a las 21:18