Mysql
 sql >> Base de données >  >> RDS >> Mysql

Interroger deux bases de données à l'aide de group by et afficher des informations détaillées

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.