MySQL Найдите различия в уровнях запасов между двумя таблицами и верните результат

У меня есть две таблицы, первая – это вчерашние уровни акций, которые называются « вчера » и содержат два столбца:

StockNumber, StockLevel 

Вторая таблица – это сегодняшние уровни запасов, которые называются « сегодня » и имеют те же столбцы «StockNumber, StockLevel».

Мой вопрос: как найти различия в уровнях запасов между таблицами «вчера» и « сегодня » для изменений « StockLevel » и нового « StockNumber », появляющегося в « сегодняшнем ».

Если это можно сделать с помощью простого 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) 

Coalesce гарантирует, что если у вас есть продукт, которого нет yesterday , вы получите t.StockLevel - 0 вместо t.StockLevel - NULL

Это позволит вам узнать об изменениях со вчерашнего дня, возвратив нулевое значение для акций, которые являются новыми для сегодняшнего дня (т. Е. Со вчерашнего дня нет изменений)

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

SQLfiddle для тестирования .

Ну, вы можете узнать разницу между уровнем акций вчера и сегодня, используя следующий 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 

Надеюсь это поможет.