前提・実現したいこと
商品の発注を行っており、
予測数量(YOSOKU_SURYOU)が0以下の商品と、
現在すでに発注をかけている商品の数量(TOTAL_HATCHU_SURYOU)を比較して
追加で発注が必要なアイテムを出力したいです。
「TOTAL_HATCHU_SURYOU」は現在発注をかけている数量となりますので
マイナスケースになることはありません。
予測数量(YOSOKU_SURYOU)は、
ある一定の時期までに、在庫として残るアイテム数の予測であり、
0またはマイナスの場合は追加発注が必要なアイテムということになります。
追加発注が必要なアイテムの中でも、
現在すでに発注をかけている商品の数量(TOTAL_HATCHU_SURYOU)で
足りるかどうかを確認したいです。
発生している問題・エラーメッセージ
(1)のSQLで出力したITEM_IDと (2)のSQLで出力したITEM_IDが一致していて (2)の「YOSOKU_SURYOU」と (1)の「TOTAL_HATCHU_SURYOU」を足した時に 【0またはマイナスになる】ITEM_IDを出力したいです。 上記を1つのSQLで出力する方法が分からず、 どのように記述すれば良いかご教示いただきたいです。 例) 予測数量(YOSOKU_SURYOU)が-20で、 発注数量(TOTAL_HATCHU_SURYOU)が5の場合は、 発注数量が15個足りないので追加発注が必要 該当のITEM_IDをSELECT結果に出力したい
該当のソースコード
Mysql
1(1) 2SELECT 3 ITEM_HATCHU.ITEM_ID, 4 SUM(HATCHU_SURYOU) as TOTAL_HATCHU_SURYOU 5FROM 6 ITEM_HATCHU 7GROUP BY 8 ITEM_HATCHU.ITEM_ID; 9 10(2) 11SELECT 12 INFO.ITEM_ID 13FROM 14 ITEM_INFO 15 INNER JOIN ITEM_YOSOKU ON 16 ITEM_INFO.ITEM_ID = ITEM_YOSOKU.ITEM_ID AND 17 ITEM_YOSOKU.YOSOKU_SURYOU <= 0 18ORDER BY 19 INFO.ITEM_ID; 20 21 22 23追記【確認用 CREATE TABLE】------------ 24 25CREATE TABLE `ITEM_HATCHU` ( 26 `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID', 27 `HATCHU_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT '発注ID', 28 `HATCHU_SURYOU` int(8) NOT NULL COMMENT '発注数量', 29 PRIMARY KEY (`HATCHU_ID`), 30 KEY `ITEM_ID` (`ITEM_ID`) 31) 32 33CREATE TABLE `ITEM_INFO` ( 34 `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID', 35 `ITEM_NAME` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID', 36 PRIMARY KEY (`ITEM_ID`) 37) 38 39CREATE TABLE `ITEM_YOSOKU` ( 40 `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID', 41 `YOSOKU_SURYOU ` int(8) NOT NULL COMMENT '予測数量', 42 PRIMARY KEY (`ITEM_ID`) 43) 44 45追記【確認用 INSERT文】------------ 46 47INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('001','-20'); 48INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('002','-20'); 49INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('003','-20'); 50INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('004','-20'); 51INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('005','-20'); 52 53INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('001','アイテムA'); 54INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('002','アイテムB'); 55INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('003','アイテムC'); 56INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('004','アイテムD'); 57INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('005','アイテムE'); 58 59INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('001','HA001','30'); 60INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('002','HA002','30'); 61INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('003','HA003','30'); 62INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('004','HA004','30'); 63INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('005','HA005','5'); 64 65→ITEM_ID「005」は、YOSOKU_SURYOUが「-20」に対して、HATCHU_SURYOUが「5」なので 66 追加発注が必要=SELECT結果にITEM_IDを出力したい 67
回答2件
あなたの回答
tips
プレビュー