如何用季节表得到最终成本产品?
我有这个sql模式。http://sqlfiddle.com/#!9月79日BB30/4/0
我用这个sql
SELECT *,
COALESCE(t1.cost, t1.base_price, `ec_products`.`price`) AS final_cost
FROM `ec_products`
LEFT JOIN
(SELECT ec_season.cost,
ec_season.base_price,
ec_season.product_id
FROM ec_season
WHERE Duration =
(SELECT MAX(Duration)
FROM ec_season
WHERE `Duration` <= 4 ) ) AS t1 ON `t1`.`product_id` = `ec_products`.`id`
但是,此sql查询存在产品id 1的错误。它给出了错误的价格30.3。但必须给这个价格40.00。因为max(duration)<=4必须是2和price 40。你能帮我吗?
我也试过这个
SELECT ec_season.cost,
ec_season.base_price,
ec_season.product_id
FROM ec_season
WHERE Duration =
(SELECT ec_season.product_id , MAX(ec_season.Duration)
FROM ec_season WHERE `Duration` <= 4 GROUP BY ec_season.product_id)
但它给了我这个错误
1241-操作数应包含1列
季节表示例
2条答案
按热度按时间vuktfyat1#
您需要匹配多个列
product_id
以及Duration
从子查询。这是一个行子查询;mysql允许元组匹配。尝试:
i34xakig2#
问题在于:
这个
=
应后跟标量子查询。标量子查询返回一列(不超过一行)。你大概打算: