DOŁĄCZ do nich:
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
Wyjaśnienie:
Wykonuję wewnętrzne zapytanie, które renderuje kolejność tabel według price ASC
zamiast domyślnego, powiedzmy id ASC
. Kiedy GROUP BY
wierszy, domyślnie używa kolumn z pierwszego wiersza, czyli w tym przypadku z najniższą ceną.
Twoje rozwiązanie nie zadziałało, ponieważ równie dobrze mogło wybrać pierwszy identyfikator, a nie wiersz z najniższą ceną. Jedyną poprawną kolumną była MIN( r.price ), ale jak zauważyłeś ta funkcja nie wpływała na inne kolumny w wyniku.