Mysql
 sql >> Database >  >> RDS >> Mysql

Interroga due db utilizzando il raggruppamento per e visualizza le informazioni dettagliate

UNISCITI a loro:

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

Spiegazione:

Eseguo una query interna che esegue il rendering dell'ordine della tabella in base a price ASC invece dell'impostazione predefinita, diciamo id ASC . Quando GROUP BY le righe, utilizza di default le colonne della prima riga, che in questo caso è quella con il prezzo più basso.

La tua soluzione non ha funzionato poiché potrebbe anche aver scelto il primo ID e non la riga del prezzo più basso. L'unica colonna corretta era MIN( r.price ), ma come hai notato quella funzione non ha influito sulle altre colonne nel risultato.