sql >> Base de Datos >  >> RDS >> Mysql

Precio MIN/MAX de cada producto (consulta)

Primero, cuando usas join , deberías siempre tener un on cláusula, aunque MySQL no requiere esto. Si desea una cross join , luego sé explícito al respecto.

En segundo lugar, no utiliza los tm_markets tabla en absoluto en la consulta. No es necesario, así que quítelo.

La consulta resultante debería 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 

Porque solo está eligiendo un producto, un group by probablemente no sea necesario. Sin embargo, puede considerar esto:

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`

Eso devolverá la información de todos los productos.