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

質問編集履歴

4

修正依頼の修正

2018/05/15 07:46

投稿

iorin
iorin

スコア32

title CHANGED
File without changes
body CHANGED
@@ -43,10 +43,10 @@
43
43
 
44
44
  |RH_PK|RD_PK|Item_No|SUM(SD.Quantity)|SUM(RRD.Diff)|
45
45
  |:--|:--:|--:|:--:|:--:|
46
- |10|36|1|1|1|
46
+ |10|41|1|1|1|
47
- |10|37|2|2|1|
47
+ |10|42|2|2|1|
48
- |10|38|3|2|2|
48
+ |10|43|3|2|2|
49
- |10|39|4|4|2|
49
+ |10|44|4|4|2|
50
50
 
51
51
 
52
52
  それぞれ、別のSQLであれば欲しいデータが取得することは出来ました。
@@ -283,10 +283,10 @@
283
283
  追記後の取得したい結果
284
284
  |RH_PK|RD_PK|Item_No|SUM(SD.Quantity)|SUM(RRD.Diff)|
285
285
  |:--|:--:|--:|:--:|:--:|
286
- |10|36|1|1|2|
286
+ |10|41|1|1|2|
287
- |10|37|2|2|3|
287
+ |10|42|2|2|3|
288
- |10|38|3|2|2|
288
+ |10|43|3|2|2|
289
- |10|39|4|4|3|
289
+ |10|44|4|4|3|
290
290
 
291
291
  ↑追記2↑
292
292
 

3

修正依頼の回答

2018/05/15 07:46

投稿

iorin
iorin

スコア32

title CHANGED
File without changes
body CHANGED
@@ -37,7 +37,6 @@
37
37
  |1 |33 |01 |3 |2 |
38
38
  |1 |34 |01 |4 |2 |
39
39
 
40
-
41
40
  今回欲しい結果
42
41
  ※QuantityとDiffはレコード増える仕様
43
42
   この例ではDiffは1つですが複数行ある場合を仮定して頂きたいです。
@@ -266,5 +265,31 @@
266
265
 
267
266
  ↑追記↑
268
267
 
268
+ ↓追記2↓
269
+
270
+ TBL4(追記)
271
+ |R_PK|D_PK|C_Cd|Item_No|Diff|
272
+ |:--|:--:|--:|:--:|:--:|
273
+ |1 |31 |01 |1 |1 |
274
+ |1 |32 |01 |2 |1 |
275
+ |1 |33 |01 |3 |2 |
276
+ |1 |34 |01 |4 |2 |
277
+ |1 |35 |01 |1 |1 |
278
+ |1 |36 |01 |2 |2 |
279
+ |1 |37 |01 |3 |0 |
280
+ |1 |38 |01 |4 |1 |
281
+
282
+
283
+ 追記後の取得したい結果
284
+ |RH_PK|RD_PK|Item_No|SUM(SD.Quantity)|SUM(RRD.Diff)|
285
+ |:--|:--:|--:|:--:|:--:|
286
+ |10|36|1|1|2|
287
+ |10|37|2|2|3|
288
+ |10|38|3|2|2|
289
+ |10|39|4|4|3|
290
+
291
+ ↑追記2↑
292
+
293
+
269
294
  何か良い方法があれば教えて頂きたいです。
270
295
  よろしくお願いします。

2

サンプルデータのSQL文を追記します。

2018/05/15 07:31

投稿

iorin
iorin

スコア32

title CHANGED
File without changes
body CHANGED
@@ -188,5 +188,83 @@
188
188
  別々で取得してPHP側で配列操作することは可能なんですが、
189
189
  出来れば1つのSQLで取得したいと考えています。
190
190
 
191
+
192
+ ↓追記↓
193
+ CREATE文
194
+
195
+ ```
196
+ CREATE TABLE `TBL1` (
197
+ `RH_PK` int (11) NOT NULL DEFAULT '0'
198
+ , `RD_PK` int (11) NOT NULL AUTO_INCREMENT
199
+ , `C_Cd` varchar (4) NOT NULL
200
+ , `O_No` varchar (10) NOT NULL
201
+ , `Item_No` int (11) NOT NULL
202
+ , PRIMARY KEY (`RD_PK`)
203
+ , UNIQUE KEY `C_Cd` (`C_Cd`, `O_No`, `Item_No`)
204
+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
205
+
206
+ CREATE TABLE `TBL2` (
207
+ `RH_PK` int (11) NOT NULL
208
+ , `RD_PK` int (11) NOT NULL
209
+ , `S_PK` int (11) NOT NULL
210
+ , `C_Cd` varchar (4) NOT NULL
211
+ , `Item_No` int (11) NOT NULL
212
+ , `Quantity` decimal (5, 0) DEFAULT NULL
213
+ , PRIMARY KEY (`RH_PK`, `RD_PK`, `S_PK`)
214
+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
215
+
216
+ CREATE TABLE `TBL3` (
217
+ `R_PK` int (11) NOT NULL AUTO_INCREMENT
218
+ , `C_Cd` varchar (4) NOT NULL
219
+ , `RH_PK` int (11) NOT NULL
220
+ , `O_No` varchar (10) NOT NULL
221
+ , PRIMARY KEY (`R_PK`)
222
+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
223
+
224
+ CREATE TABLE `TBL4` (
225
+ `D_PK` int (11) NOT NULL AUTO_INCREMENT
226
+ , `R_PK` int (11) NOT NULL
227
+ , `C_Cd` varchar (4) NOT NULL
228
+ , `Item_No` int (11) NOT NULL
229
+ , `Diff` decimal (5, 0) DEFAULT NULL
230
+ , PRIMARY KEY (`D_PK`)
231
+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
232
+
233
+ ```
234
+ INSERT文
235
+ ```
236
+ INSERT
237
+ INTO TBL1(RH_PK, RD_PK, C_Cd, O_No, Item_No)
238
+ values (10, 41, 01, 'A100', 1)
239
+ , (10, 42, 01, 'A100', 2)
240
+ , (10, 43, 01, 'A100', 3)
241
+ , (10, 44, 01, 'A100', 4);
242
+
243
+ INSERT
244
+ INTO TBL2(RH_PK, RD_PK, S_PK, C_Cd, Item_No, Quantity)
245
+ values (10, 41, 1, 01, 1, 1)
246
+ , (10, 41, 2, 01, 1, 0)
247
+ , (10, 42, 1, 01, 2, 1)
248
+ , (10, 42, 2, 01, 2, 1)
249
+ , (10, 43, 1, 01, 3, 0)
250
+ , (10, 43, 2, 01, 3, 2)
251
+ , (10, 44, 1, 01, 4, 1)
252
+ , (10, 44, 2, 01, 4, 3);
253
+
254
+ INSERT
255
+ INTO TBL3(RH_PK, R_PK, C_Cd, O_No)
256
+ values (10, 1, 01, 'A100');
257
+
258
+ INSERT
259
+ INTO TBL4(R_PK, D_PK, C_Cd, Item_No, Diff)
260
+ values (1, 31, 01, 1, 1)
261
+ , (1, 32, 01, 2, 1)
262
+ , (1, 33, 01, 3, 2)
263
+ , (1, 34, 01, 4, 2);
264
+
265
+ ```
266
+
267
+ ↑追記↑
268
+
191
269
  何か良い方法があれば教えて頂きたいです。
192
270
  よろしくお願いします。

1

データ部分を表として挿入しました。

2018/05/15 07:18

投稿

iorin
iorin

スコア32

title CHANGED
File without changes
body CHANGED
@@ -3,53 +3,51 @@
3
3
  以下のような4つのテーブルが存在します。
4
4
 
5
5
  TBL1
6
- +-----------------------------+
7
6
  |RH_PK|RD_PK|C_Cd|O_No|Item_No|
7
+ |:--|:--:|--:|:--:|:--:|
8
- |10 |41 |01 |A100|1 |
8
+ |10|41|01|A100|1|
9
- |10 |42 |01 |A100|2 |
9
+ |10|42|01|A100|2|
10
- |10 |43 |01 |A100|3 |
10
+ |10|43|01|A100|3|
11
- |10 |44 |01 |A100|4 |
11
+ |10|44|01|A100|4|
12
- +-----------------------------+
13
12
 
13
+
14
14
  TBL2
15
- +--------------------------------------+
16
15
  |RH_PK|RD_PK|S_PK|C_Cd|Item_No|Quantity|
17
- |10 |41 |1 |01 |1 |1 |
18
- |10 |41 |2 |01 |1 |0 |
19
- |10 |42 |1 |01 |2 |1 |
20
- |10 |42 |2 |01 |2 |1 |
21
- |10 |43 |1 |01 |3 |0 |
22
- |10 |43 |2 |01 |3 |2 |
23
- |10 |44 |1 |01 |4 |1 |
24
- |10 |44 |2 |01 |4 |3 |
25
- +--------------------------------------+
16
+ |:--|:--:|--:|:--:|:--:|:--:|
17
+ |10|41|1|01|1|1|
18
+ |10|41|2|01|1|0|
19
+ |10|42|1|01|2|1|
20
+ |10|42|2|01|2|1|
21
+ |10|43|1|01|3|0|
22
+ |10|43|2|01|3|2|
23
+ |10|44|1|01|4|1|
24
+ |10|44|2|01|4|3|
26
25
 
27
26
  TBL3(TBL1とTBL4の紐付けに必要)
28
- +--------------------+
27
+
29
28
  |RH_PK|R_PK|C_Cd|O_No|
29
+ |:--|:--:|--:|:--:|
30
- |10 |1 |01 |A100|
30
+ |10|1|01|A100|
31
- +--------------------+
32
31
 
33
32
  TBL4
34
- +---------------------------+
35
33
  |R_PK|D_PK|C_Cd|Item_No|Diff|
34
+ |:--|:--:|--:|:--:|:--:|
36
35
  |1 |31 |01 |1 |1 |
37
36
  |1 |32 |01 |2 |1 |
38
37
  |1 |33 |01 |3 |2 |
39
38
  |1 |34 |01 |4 |2 |
40
- +---------------------------+
41
39
 
40
+
42
41
  今回欲しい結果
43
42
  ※QuantityとDiffはレコード増える仕様
44
43
   この例ではDiffは1つですが複数行ある場合を仮定して頂きたいです。
45
44
 
46
- +--------------------------------------------------+
47
45
  |RH_PK|RD_PK|Item_No|SUM(SD.Quantity)|SUM(RRD.Diff)|
48
- |10 |36 |1 |1 |1 |
49
- |10 |37 |2 |2 |1 |
50
- |10 |38 |3 |2 |2 |
51
- |10 |39 |4 |4 |2 |
52
- +--------------------------------------------------+
46
+ |:--|:--:|--:|:--:|:--:|
47
+ |10|36|1|1|1|
48
+ |10|37|2|2|1|
49
+ |10|38|3|2|2|
50
+ |10|39|4|4|2|
53
51
 
54
52
 
55
53
  それぞれ、別のSQLであれば欲しいデータが取得することは出来ました。