在数据库中选择每种产品的最低/最高价格。
我只能获得具有指定标识符的产品。
我正在使用 MySQL, 并且有以下查询:
SELECT (MIN(`map`.`Product_Price`)) as `minProductPrice`, (MAX(`map`.`Product_Price`)) as `maxProductPrice`, `pr`.`Product_Name` as `productName` FROM `bm_market_products` as `map` JOIN `bm_products` as `pr` JOIN `bm_markets` as `ma` WHERE `map`.`Product_Id` = 1 AND `map`.`Product_Id` = `pr`.`Product_Id`
我的回报是minProductPrice,maxProductPrice和productName。
minProductPrice
maxProductPrice
productName
谢谢您的帮助。上面的两个答案都是正确的-但我选择@GordonLinoff答案被接受,因为我认为这将对初学者更加有用和享受-‘’但真的要感谢你们两个人。 最终查询:
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`
干杯!
首先,使用时,即使MySQL不需要join,也应 始终 有一个on子句。如果您想要一个cross join,请明确说明。
join
on
cross join
其次,您根本不用tm_markets查询中的表。不需要它,因此将其删除。
tm_markets
结果查询应工作:
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
因为您只选择一种产品,group by所以可能没有必要。您可以考虑一下,但是:
group by
这将返回所有产品的信息。