REJOIGNEZ-LES :
SELECT r.product_id, i.brand, i.name, i.category, DATE_FORMAT( r.inputTime, '%e-%b' ) AS inputTime, r.shopType, r.price AS minimum_price, r.record_id
FROM ( SELECT *
FROM itemRecord
WHERE product_id = '1'
ORDER BY price ASC, inputTime DESC) AS r
INNER JOIN itemInfo As i
ON r.product_id = i.product_id
WHERE i.id = r.product_id
GROUP BY DATE(r.inputTime)
LIMIT 0, 7
Explication :
Je fais une requête interne qui rend l'ordre de la table par price ASC
au lieu de la valeur par défaut, disons id ASC
. Lorsque vous GROUP BY
les lignes, il utilise les colonnes de la première ligne par défaut, qui dans ce cas est celle avec le prix le plus bas.
Votre solution n'a pas fonctionné car elle aurait également pu choisir le premier identifiant et non la ligne de prix la plus basse. La seule colonne qui était correcte était le MIN( r.price ), mais comme vous l'avez remarqué, cette fonction n'affectait pas les autres colonnes du résultat.