DOE MEE:
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
Uitleg:
Ik doe een innerlijke query die de tabelvolgorde weergeeft op price ASC
in plaats van de standaard, laten we zeggen id ASC
. Wanneer u GROUP BY
de rijen, het gebruikt standaard de kolommen van de eerste rij, in dit geval degene met de laagste prijs.
Uw oplossing werkte niet omdat het net zo goed de eerste id had kunnen kiezen en niet de rij met de laagste prijs. De enige juiste kolom was de MIN( r.price ), maar zoals je hebt opgemerkt had die functie geen invloed op de andere kolommen in het resultaat.