teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

一部記述ミスがあったので修正しました

2021/02/05 12:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -81,7 +81,7 @@
81
81
  CREATE TABLE `ITEM_YOSOKU` (
82
82
  `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID',
83
83
  `YOSOKU_SURYOU ` int(8) NOT NULL COMMENT '予測数量',
84
- PRIMARY KEY (`STOCK_ID`)
84
+ PRIMARY KEY (`ITEM_ID`)
85
85
  )
86
86
 
87
87
  追記【確認用 INSERT文】------------

2

CREATE TABLE、INSERT文を追加しました。ネーミングをヘボン式に修正しました。

2021/02/05 12:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,24 +1,40 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  商品の発注を行っており、
4
- 想定数量(YOSOKU_SURYOU)が0以下の商品と、
4
+ 予測数量(YOSOKU_SURYOU)が0以下の商品と、
5
- 現在すでに発注をかけている商品の数量(TOTAL_HATYUU_SURYOU)を比較して
5
+ 現在すでに発注をかけている商品の数量(TOTAL_HATCHU_SURYOU)を比較して
6
6
  追加で発注が必要なアイテムを出力したいです。
7
7
 
8
+ 「TOTAL_HATCHU_SURYOU」は現在発注をかけている数量となりますので
9
+ マイナスケースになることはありません。
8
10
 
11
+ 予測数量(YOSOKU_SURYOU)は、
12
+ ある一定の時期までに、在庫として残るアイテム数の予測であり、
13
+ 0またはマイナスの場合は追加発注が必要なアイテムということになります。
14
+
15
+ 追加発注が必要なアイテムの中でも、
16
+ 現在すでに発注をかけている商品の数量(TOTAL_HATCHU_SURYOU)で
17
+ 足りるかどうかを確認したいです。
18
+
19
+
9
20
  ### 発生している問題・エラーメッセージ
10
21
 
11
22
  ```
12
23
  (1)のSQLで出力したITEM_IDと
13
24
  (2)のSQLで出力したITEM_IDが一致していて
14
25
 
15
- (2)の「YOSOKU_SURYOU」
26
+ (2)の「YOSOKU_SURYOU」
16
- (1)の「TOTAL_HATYUU_SURYOUよりも【少ない】
27
+ (1)の「TOTAL_HATCHU_SURYOUを足した時に
17
- ITEM_IDを出力したいです。
28
+ 【0またはマイナスになる】ITEM_IDを出力したいです。
18
- ※それぞれのテーブルのITEM_IDはPRIMARY KEYとなります。
19
29
 
20
30
  上記を1つのSQLで出力する方法が分からず、
21
31
  どのように記述すれば良いかご教示いただきたいです。
32
+
33
+ 例)
34
+ 予測数量(YOSOKU_SURYOU)が-20で、
35
+ 発注数量(TOTAL_HATCHU_SURYOU)が5の場合は、
36
+ 発注数量が15個足りないので追加発注が必要
37
+ 該当のITEM_IDをSELECT結果に出力したい
22
38
  ```
23
39
 
24
40
  ### 該当のソースコード
@@ -26,23 +42,69 @@
26
42
  ```Mysql
27
43
  (1)
28
44
  SELECT
29
- ITEM_ID,
45
+ ITEM_HATCHU.ITEM_ID,
30
- SUM(HATYUU_SURYOU) as TOTAL_HATYUU_SURYOU
46
+ SUM(HATCHU_SURYOU) as TOTAL_HATCHU_SURYOU
31
47
  FROM
32
- ITEM_HATYUU
48
+ ITEM_HATCHU
33
- where
34
- HATYUU_KANRYOU_FLG = 0
35
49
  GROUP BY
36
- ITEM_HATYUU.ITEM_ID;
50
+ ITEM_HATCHU.ITEM_ID;
37
51
 
38
52
  (2)
39
53
  SELECT
40
54
  INFO.ITEM_ID
41
55
  FROM
42
- ITEM_INFO AS INFO
56
+ ITEM_INFO
43
- INNER JOIN ITEM_YOSOKU AS YOSOKU ON
57
+ INNER JOIN ITEM_YOSOKU ON
44
- INFO.ITEM_ID = YOSOKU.ITEM_ID AND
58
+ ITEM_INFO.ITEM_ID = ITEM_YOSOKU.ITEM_ID AND
45
- YOSOKU.YOSOKU_SURYOU <= 0
59
+ ITEM_YOSOKU.YOSOKU_SURYOU <= 0
46
60
  ORDER BY
47
61
  INFO.ITEM_ID;
62
+
63
+
64
+
65
+ 追記【確認用 CREATE TABLE】------------
66
+
67
+ CREATE TABLE `ITEM_HATCHU` (
68
+ `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID',
69
+  `HATCHU_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT '発注ID',
70
+ `HATCHU_SURYOU` int(8) NOT NULL COMMENT '発注数量',
71
+ PRIMARY KEY (`HATCHU_ID`),
72
+ KEY `ITEM_ID` (`ITEM_ID`)
73
+ )
74
+
75
+ CREATE TABLE `ITEM_INFO` (
76
+ `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID',
77
+ `ITEM_NAME` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID',
78
+ PRIMARY KEY (`ITEM_ID`)
79
+ )
80
+
81
+ CREATE TABLE `ITEM_YOSOKU` (
82
+ `ITEM_ID` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'アイテムID',
83
+ `YOSOKU_SURYOU ` int(8) NOT NULL COMMENT '予測数量',
84
+ PRIMARY KEY (`STOCK_ID`)
85
+ )
86
+
87
+ 追記【確認用 INSERT文】------------
88
+
89
+ INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('001','-20');
90
+ INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('002','-20');
91
+ INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('003','-20');
92
+ INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('004','-20');
93
+ INSERT INTO `ITEM_YOSOKU` (`ITEM_ID`, `YOSOKU_SURYOU`) VALUES ('005','-20');
94
+
95
+ INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('001','アイテムA');
96
+ INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('002','アイテムB');
97
+ INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('003','アイテムC');
98
+ INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('004','アイテムD');
99
+ INSERT INTO `ITEM_INFO` (`ITEM_ID`, `ITEM_NAME`) VALUES ('005','アイテムE');
100
+
101
+ INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('001','HA001','30');
102
+ INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('002','HA002','30');
103
+ INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('003','HA003','30');
104
+ INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('004','HA004','30');
105
+ INSERT INTO `ITEM_HATCHU` (`ITEM_ID`, `HATCHU_ID`, `HATCHU_SURYOU` ) VALUES ('005','HA005','5');
106
+
107
+ →ITEM_ID「005」は、YOSOKU_SURYOUが「-20」に対して、HATCHU_SURYOUが「5」なので
108
+ 追加発注が必要=SELECT結果にITEM_IDを出力したい
109
+
48
110
  ```

1

初心者アイコンを追加させていただきました。

2021/02/05 12:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
  ※それぞれのテーブルのITEM_IDはPRIMARY KEYとなります。
19
19
 
20
20
  上記を1つのSQLで出力する方法が分からず、
21
- どのように記述すれば良いか教えていただきたいです。
21
+ どのように記述すれば良いかいただきたいです。
22
22
  ```
23
23
 
24
24
  ### 該当のソースコード