質問編集履歴
4
修正依頼の修正
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|
|
46
|
+
|10|41|1|1|1|
|
47
|
-
|10|
|
47
|
+
|10|42|2|2|1|
|
48
|
-
|10|
|
48
|
+
|10|43|3|2|2|
|
49
|
-
|10|
|
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|
|
286
|
+
|10|41|1|1|2|
|
287
|
-
|10|
|
287
|
+
|10|42|2|2|3|
|
288
|
-
|10|
|
288
|
+
|10|43|3|2|2|
|
289
|
-
|10|
|
289
|
+
|10|44|4|4|3|
|
290
290
|
|
291
291
|
↑追記2↑
|
292
292
|
|
3
修正依頼の回答
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文を追記します。
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
データ部分を表として挿入しました。
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
|
8
|
+
|10|41|01|A100|1|
|
9
|
-
|10
|
9
|
+
|10|42|01|A100|2|
|
10
|
-
|10
|
10
|
+
|10|43|01|A100|3|
|
11
|
-
|10
|
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
|
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であれば欲しいデータが取得することは出来ました。
|