MySQL查找两个表之间库存水平的差异并返回结果

时间:2013-02-24 11:22:18

标签: php mysql sql

我有两张桌子,第一张是昨天的库存水平称为" 昨天"并包含两列:

StockNumber, StockLevel

第二张表是今天的库存水平,称为" 今天"并且具有相同的列" StockNumber,StockLevel"。

我的问题是,如何找到"昨天"之间的库存水平差异?和" 今天"两个表格" StockLevel "变化和新的" StockNumber "出现在" 今天"。

如果这可以通过直接的SQL来完成,但是使用PHP添加额外的处理级别也没关系

3 个答案:

答案 0 :(得分:2)

select y.StockNumber, t.StockLevel - y.StockLevel from yesterday as y inner join today as t on (y.StockNumber = t.StockNumber)

编辑:

捕获今天表中不在昨天表中的产品:

select y.StockNumber, t.StockLevel - coalesce(y.StockLevel,0) from yesterday as y right join today as t on (y.StockNumber = t.StockNumber)

合并确保如果您的产品不在yesterday,您将获得t.StockLevel - 0而不是t.StockLevel - NULL

答案 1 :(得分:1)

这将让你知道昨天的变化,为今天新的股票返回null(即昨天没有变化显示)

SELECT t.stocknumber, t.stocklevel-y.stocklevel difference
FROM today t
LEFT JOIN yesterday y
  ON t.stocknumber = y.stocknumber

An SQLfiddle to test with

答案 2 :(得分:0)

那么,您可以使用以下sql找出昨天和今天的库存水平之间的差异。

select y.stockNumber, (t.stockLevel-y.stockLevel) as difference
from today t, yesterday y,
where t.stockNumber=y.stockNumber
group by t.stockNumber,t.stockLevel,y.stockLevel

希望这有帮助。