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

Prix ​​MIN/MAX pour chaque produit (requête)

Tout d'abord, lorsque vous utilisez join , vous devriez toujours avoir un on clause, même si MySQL ne l'exige pas. Si vous voulez une cross join , alors soyez explicite à ce sujet.

Deuxièmement, vous n'utilisez pas les tm_markets table du tout dans la requête. Il n'est pas nécessaire, alors supprimez-le.

La requête résultante devrait fonctionner :

SELECT MIN(`map`.`Product_Price`) as `minProductPrice`,
       MAX(`map`.`Product_Price`) as `maxProductPrice`,
       `pr`.`Product_Name` as `productName`
FROM `bm_market_products` `map` join
     `bm_products` as `pr`
     on map`.`Product_Id` = `pr`.`Product_Id`
WHERE `map`.`Product_Id` = 1 

Parce que vous ne choisissez qu'un seul produit, un group by n'est probablement pas nécessaire. Cependant, vous pourriez envisager ceci :

SELECT MIN(`map`.`Product_Price`) as `minProductPrice`,
       MAX(`map`.`Product_Price`) as `maxProductPrice`,
       `pr`.`Product_Name` as `productName`
FROM `bm_market_products` `map` join
     `bm_products` as `pr`
     on map`.`Product_Id` = `pr`.`Product_Id`
group by `map`.`Product_Id`

Cela renverra les informations pour tous les produits.