###前提・実現したいこと
商品管理データベースのようなものを検討しています。
例として、ガンプラ屋さんのデータを作成してみました。
テーブルganpura
ID
,name
,price
,stock
,date
MS-06,ザク,2000,3,2017/03/06
MS-09,ドム,2500,3,2017/03/06
MSM-07,ズゴック,1700,3,2017/03/06
MS-06,ザク,2000,0,2017/03/07
MS-09,ドム,2500,3,2017/03/07
MSM-07,ズゴック,1700,3,2017/03/07
MSM-04,アッガイ,2000,3,2017/03/07
MS-09,ドム,2000,3,2017/03/08
MSM-07,ズゴック,1700,3,2017/03/08
MSM-04,ガンダム,2000,3,2017/03/08
このように、毎日の在庫や価格を取り込んで、データの点検をしたいと思います。
この場合、例えば2017/03/06と、2017/03/07の日付で比較し、ザクが3つ減って、在庫が0である事、アッガイが新しく入荷した事を検出したいです。
また、2017/03/07と、2017/03/08 の比較で、ドムの値段を500円下げた事、MSM-04の名前が間違ってガンダムに変わってしまった事、ザクがデータ一覧に無い事なども検出したいです。
###該当のソースコード
SQL
1SELECT `ID` FROM ( 2 SELECT `ID` FROM `ganpura` WHERE `date` = '2017/03/07' 3) AS t1 4WHERE `ID` NOT IN ( 5 SELECT t2.`ID` FROM ( 6 SELECT `ID` FROM `ganpura` WHERE `date` = '2017/03/06' 7 ) AS t2 8) 9;
###試したこと
MySQLのデーブル同士の比較や、IN句でのサブクエリなどの情報をミックスして、上のようなSQLを組んだところ、MSM-04を得られましたので、新しく増えたアッガイを検出することは出来ると思います。
また、これを逆転させれば、3/8にザクが無い事も検出は可能と思います。
しかし、その他の同じIDの価格や名前の違いを検出する方法を見つけ出せずにおります。
一度のSQLで検出できなくても大丈夫ですので、このようなデータから、日付毎の項目内容の違いを抽出するSQLがありましたら、ご教授ください。
なお、記載はいたしませんでしたが、ganpuraテーブルにはオートインクリメントのPrimarykeyのフィールドはあります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/07 09:13
2017/03/07 09:27
2017/03/07 09:41
2017/03/07 09:44
2017/03/07 13:17
2017/03/09 04:41
2017/03/09 04:50
2017/03/09 05:20
2017/03/09 05:23
2017/03/09 05:47