Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2014, 10:02
juanito_29899
 
Fecha de Ingreso: noviembre-2013
Mensajes: 27
Antigüedad: 10 años, 6 meses
Puntos: 1
GROUP BY en MATCH AGAINST respetando relevancia

Hola.

He buscado en FDW, y gracias a este post:
[URL="http://www.forosdelweb.com/f86/group-order-no-devuelven-que-quiero-814669/"]
http://www.forosdelweb.com/f86/group-order-no-devuelven-que-quiero-814669/[/URL]

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Primero ordenar, luego agrupar...
Tomando a Huesos52:
Código MySQL:
Ver original
  1.    t.id, t.catid, t.name, t.userid, t.subject  
  2.     (SELECT id,  catid,  name,  userid,  subject , thread
  3.     FROM mensajes
  4.     ORDER BY t.id DESC) t
  5. GROUP BY t.thread  

Resolví mi problema de usar ORDER BY y GROUP BY, en un SELECT normal. Pero ahora en ese SELECT tengo MATCH AGAINST y no sé como usar un ORDER BY y un GROUP BY juntos en la consulta.

El código que tengo ahora es este:

Código MySQL:
Ver original
  1. (SELECT *, MATCH(keywords) AGAINST('$busqueda') AS relevancia FROM libros WHERE MATCH(keywords) AGAINST('$busqueda')
  2. AND tipo = 'nuevo'
  3. GROUP BY id_libro ORDER BY relevancia DESC, posicion ASC, precio DESC LIMIT $numero_limite)

He probado a hacer lo mismo siguiendo la misma lógica que en los demás, pero siempre me da error:

Código MySQL:
Ver original
  1. (SELECT *, MATCH(keywords) AGAINST('$busqueda') AS relevancia FROM
  2.  
  3. (SELECT *, MATCH(keywords) AGAINST('$busqueda') AS relevancia FROM libros WHERE MATCH(keywords) AGAINST('$busqueda')
  4. AND tipo = 'nuevo'
  5. ORDER BY relevancia DESC, posicion ASC, precio DESC)
  6.  
  7. libros WHERE MATCH(keywords) AGAINST('$busqueda')
  8. AND tipo = 'nuevo'
  9. GROUP BY id_libro
  10.  
  11. LIMIT $numero_limite)










El resultado debería ser el que tiene como id_unico el "9".


¿Alguien sabe hacerlo?

Última edición por juanito_29899; 01/02/2014 a las 07:18