1

2 つのテーブルがあります。1 つ目は「昨日」と呼ばれる昨日の在庫レベルで、2 つの列が含まれています。

StockNumber, StockLevel

2 番目のテーブルは「today」と呼ばれる今日の在庫レベルで、同じ列「StockNumber、StockLevel」があります。

私の質問は、「 StockLevel」の変更と「今日」に表示される新しい「StockNumber の両方について、「昨日」と「今日」のテーブルの間の在庫レベルの違いをどのように見つけるかです。

これがそのままの SQL でできればそれでいいのですが、PHP を使って別のレベルの処理を追加することも OK です。

4

3 に答える 3

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 - 0t.StockLevel - NULL

于 2013-02-24T11:24:31.837 に答える
1

これにより、昨日からの変化を知ることができ、今日の新しい株の場合は null を返します (つまり、表示する昨日からの変化はありません)。

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

でテストする SQLfiddle

于 2013-02-24T11:38:09.253 に答える
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

お役に立てれば。

于 2013-02-24T11:31:25.543 に答える