Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查找两个表之间的库存水平差异并返回结果_Php_Mysql_Sql - Fatal编程技术网

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

Php MySQL查找两个表之间的库存水平差异并返回结果,php,mysql,sql,Php,Mysql,Sql,我有两个表,第一个是昨天的库存水平,称为“昨天”,包含两列: StockNumber, StockLevel 第二个表是今天的库存水平,称为“今天”,并具有相同的列“库存编号,库存水平” 我的问题是,我如何找到“昨天”和“今天”表中出现的“股票水平”变化和新“股票数量”的股票水平差异 如果这可以通过直接的SQL来实现,那很好,但是使用PHP添加额外的处理级别也是可以的 select y.StockNumber, t.StockLevel - y.StockLevel from yesterda

我有两个表,第一个是昨天的库存水平,称为“昨天”,包含两列:

StockNumber, StockLevel
第二个表是今天的库存水平,称为“今天”,并具有相同的列“库存编号,库存水平”

我的问题是,我如何找到“昨天”和“今天”表中出现的“股票水平”变化和新“股票数量”的股票水平差异

如果这可以通过直接的SQL来实现,那很好,但是使用PHP添加额外的处理级别也是可以的

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)

合并确保如果您的产品不在昨天的
,那么您将得到
t.StockLevel-0
,而不是
t.StockLevel-NULL

,您可以使用下面的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

希望这有帮助。

这将让您知道昨天的变化,对于今天的新股票返回null(即从昨天到显示没有变化)


.

是的,可以用SQL完成-试试看。如果您对生成的SQL有问题,请将其作为问题发布。
昨天的
库存级别是否可以不出现在今天的中?“…库存级别和新的“库存编号”都会在“今天”中出现。如果库存编号从昨天更改为今天,则无法加入它们@伊恩,啊,库存编号将保持不变,只是如果在“今日”表中添加了一个新的库存编号,那么该新库存编号将被识别,该库存编号和级别的库存级别也将被返回。很简单,只需在今日表上右键联接,就可以为今天的每个产品获得一行。这不会显示在today表中删除的任何内容,但这对于您的用例来说似乎是可以的。还要注意,您需要使用nvl或合并来解释空值。我将用新的查询更新我的帖子。
SELECT t.stocknumber, t.stocklevel-y.stocklevel difference
FROM today t
LEFT JOIN yesterday y
  ON t.stocknumber = y.stocknumber