MySQL价格和库存比较

MySQL价格和库存比较,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

我有一个关于我原来帖子的后续问题

假设我有包含以下列的表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      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