Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Preço MIN/MAX para cada produto (consulta)


Primeiro, quando você usa join , você deve sempre tem um on cláusula, mesmo que o MySQL não exija isso. Se você deseja uma cross join , então seja explícito sobre isso.

Segundo, você não usa o tm_markets tabela em tudo na consulta. Não é necessário, então remova-o.

A consulta resultante deve funcionar:
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 

Como você está escolhendo apenas um produto, um group by provavelmente não é necessário. Você pode considerar isso, no entanto:
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`

Isso retornará as informações de todos os produtos.