MySQL价格和库存比较
我有一个关于我原来帖子的后续问题 假设我有包含以下列的表1 例AMySQL价格和库存比较,mysql,Mysql,我有一个关于我原来帖子的后续问题 假设我有包含以下列的表1 例A |item |partnumber |supplier |stock |cost CD 11A West 11 10.11 CD 11A East 0 10.00 USB BBB North 1 125.01 USB BBB West
|item |partnumber |supplier |stock |cost
CD 11A West 11 10.11
CD 11A East 0 10.00
USB BBB North 1 125.01
USB BBB West 1 101.10
通过@Ali的帮助,我现在所取得的成果是,表1显示了以下内容,基本上向供应商展示了产品的最便宜价格:
例B
|item |partnumber |supplier |stock |cost
CD 11A East 0 10.00
USB BBB West 1 101.10
This is the code for EXAMPLE B that is working:
SELECT a.name , a.partnumber , a.supplier , a.cost FROM table1 a JOIN (
SELECT name , partnumber , MIN(cost) cost
FROM table1
GROUP BY name , partnumber )
b ON a.name = b.name AND a.cost = b.cost AND a.partnumber = b.partnumber
但是:如果价格最便宜的供应商的库存为0,但另一个供应商的库存超过0,即使价格不是最便宜的,我如何实现这一点?以下示例中,西部将取代东部,如下所示:
例C
|item |partnumber |supplier |stock |cost
CD 11A West 11 10.11
USB BBB West 1 101.10
更加清晰;始终向供应商展示库存中最便宜的商品,除非最便宜的供应商没有库存,但另一个供应商有库存,在这种情况下,请展示库存。那么,如何实现示例C呢
多谢各位 您是否尝试过在子查询中添加where条件 SELECT a.name , a.partnumber , a.supplier , a.cost FROM table1 a JOIN ( SELECT name , partnumber , MIN(cost) cost FROM table1 where stock > 0 GROUP BY name , partnumber ) b ON a.name = b.name AND a.cost = b.cost AND a.partnumber = b.partnumber 试试这个:
select a.item,a.partnumber,b.supplier,a.stock,min(a.cost) from
(select item,partnumber,supplier,stock,min(cost) cost from
(select * from table1) as a where stock !=0
group by item,partnumber) as a
LEFT JOIN
(select item,partnumber,supplier,stock,cost from
(select * from table1) as a where stock !=0) as b
on a.cost = b.cost
group by a.item,a.partnumber
结果:
CD 11A West 11 10.11
USB BBB West 1 101.1
显示您迄今为止所做/尝试的内容。@reds我现在添加了代码。您的“C”是预期结果吗?@reds是的,C将是所需的最终结果。hi,这将从比较中删除任何没有库存的产品。我觉得我不够清楚,所以我会再试一次;有没有一种方法可以显示库存中最便宜的商品,但是,当且仅当该商品在任何地方都没有库存时,则无论该商品是否有库存,都可以显示最便宜的商品?非常感谢@redsI,我只是给你一个预期的结果,就是你的样本C