Creo que voy viendo la luz...
Tengo algo así que parece devolver los productos en el orden que quiero:
Código:
SELECT prices.* FROM c_products INNER JOIN (SELECT DISTINCT * FROM c_products WHERE categoria = 'cereales' ORDER BY precio) prices ON prices.id = c_products.id ORDER BY c_products.precio
Lo que no consigo es dividir los registros para la paginación.
Según mi planteamiento, el LIMIT debería ponerlo en la consulta que genera la tabla "prices", es decir,
Código:
SELECT DISTINCT * FROM c_products WHERE categoria = 'cereales' ORDER BY precio LIMIT 0,5
Sin embargo cuando lo hago así no funciona correctamente. No muestra todos los precios de un id (a pesar de que haya registros después) y vuelve a mostrar varios registros de ese id en la posición donde le correspondería al precio no mostrado.
¿Un empujoncito?