質問編集履歴

7

コードを一部修正

2017/01/15 09:27

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -164,6 +164,8 @@
164
164
 
165
165
  nin6id = get_nin_id('s6', num1, num2, num3, num4, num5)
166
166
 
167
+ insert(...)
168
+
167
169
  ```
168
170
 
169
171
 

6

質問内容の調整、typoの修正

2017/01/15 09:27

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -10,22 +10,32 @@
10
10
 
11
11
 
12
12
 
13
- 数列A
13
+ 数列A(mst_nin_s6の中身(抜粋))
14
14
 
15
15
  1 | 2 | 3 | 4 | 5 | 6
16
16
 
17
+ 1 | 2 | 3 | 4 | 5 | 7
18
+
19
+ ...
20
+
21
+ 6 | 7 | 8 | 9 | 10 | 11
22
+
23
+ 数値は最大11までで、全てのパターンが網羅されているものとします。
24
+
17
25
 
18
26
 
19
27
  上記数列に対して、以下の数列が存在するかを確認したいです。
20
28
 
21
29
 
22
30
 
23
- 数列B
31
+ 数列B(チェック元となるテーブルの中身)
24
32
 
25
33
  5 | 7 | 11 | 9 | 4
26
34
 
27
35
 
28
36
 
37
+
38
+
29
39
  excelでの計算式は以下の通りです。
30
40
 
31
41
  ```EXCEL
@@ -42,7 +52,7 @@
42
52
 
43
53
  OR(5=4, 7=4, 11=4, 9=4, 4=4),
44
54
 
45
- OR(5=5, 7=5, 11=5, 9=5, 4=5
55
+ OR(5=5, 7=5, 11=5, 9=5, 4=5)
46
56
 
47
57
  )
48
58
 
@@ -50,22 +60,28 @@
50
60
 
51
61
  ```
52
62
 
53
- 数列Bを1ずつに分解して、数列Aに含まれるかを確認している状態です
63
+ 数列Bを1ずつに分解して、数列Aに含まれるかを確認している計算式です。
54
-
55
-
56
-
57
-
58
-
64
+
65
+
66
+
67
+
68
+
59
- 上記Excelの計算式を、Pythonにて実装しようとしています。
69
+ 上記Excelの計算式を、PythonとPHPにて実装しようとしています。
70
+
71
+
72
+
60
-
73
+ ---
61
-
62
-
74
+
75
+
76
+
63
- まず、以下のSQLを実行し、含まれるかどうかの判定をしています。
77
+ まず、以下のPythonを実行し、含まれるかどうかの判定をしています。
64
78
 
65
79
 
66
80
 
67
81
  ```Python
68
82
 
83
+ def get_nin_id(suffix, num1, num2, num3, num4, num5):
84
+
69
85
  query = "select id from mst_nin_%s where " % (suffix)
70
86
 
71
87
  if (suffix == 's8'):
@@ -108,6 +124,46 @@
108
124
 
109
125
  ...
110
126
 
127
+
128
+
129
+ cur = con.cursor()
130
+
131
+ cur.execute(query)
132
+
133
+ rows = cur.fetchall()
134
+
135
+ if (rows is None):
136
+
137
+ return 0
138
+
139
+ else:
140
+
141
+ ids = ''
142
+
143
+ for row in rows:
144
+
145
+ if ids == '':
146
+
147
+ ids = str(row['id'])
148
+
149
+ else:
150
+
151
+ ids += ',' + str(row['id'])
152
+
153
+
154
+
155
+ return ids
156
+
157
+ ...
158
+
159
+
160
+
161
+ # nin s6
162
+
163
+ # num1からnum5は、チェック元テーブルの中から取得した物(数列B)
164
+
165
+ nin6id = get_nin_id('s6', num1, num2, num3, num4, num5)
166
+
111
167
  ```
112
168
 
113
169
 
@@ -136,7 +192,7 @@
136
192
 
137
193
  マスタテーブル構造は以下の通です。(mst_nin_s6)
138
194
 
139
-
195
+ 中身は、数列Aのものです。
140
196
 
141
197
  ![mst_nin_s6](fd7c195f2bbcbf0e82e27647c1ace3a2.png)
142
198
 
@@ -144,7 +200,7 @@
144
200
 
145
201
  チェック結果を入れるテーブル構造は以下の通りです。(input_nin_s6)
146
202
 
147
- 中のデータは、mst_nin_s6のid値です。
203
+ 中のデータは、mst_nin_s6のid値(カンマ区切り)です。
148
204
 
149
205
 
150
206
 
@@ -152,6 +208,12 @@
152
208
 
153
209
 
154
210
 
211
+ ---
212
+
213
+ -------------- ここから、PHPでの処理 --------------
214
+
215
+
216
+
155
217
  存在するかを確認するクエリは以下の通です。
156
218
 
157
219
 
@@ -226,7 +288,7 @@
226
288
 
227
289
  全体の流れをざっくりまとめると
228
290
 
229
- Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
291
+ Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6(数列B)とぶつけ、input_nin_s6に結果を入れる
230
292
 
231
293
  その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
232
294
 

5

typoの修正

2017/01/15 09:05

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -226,7 +226,7 @@
226
226
 
227
227
  全体の流れをざっくりまとめると
228
228
 
229
- Puthonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
229
+ Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
230
230
 
231
231
  その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
232
232
 

4

処理の流れを追記

2017/01/15 08:06

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -214,8 +214,20 @@
214
214
 
215
215
 
216
216
 
217
- ---- 16:40編集 -----
217
+ ---- 2017/01/15 16:40編集 ----
218
218
 
219
219
  チェック元となるテーブルは、諸事情により公開することができません。申し訳ありません。
220
220
 
221
221
  中のデータ構造は、最初の方で定義している、数列Bとなります。
222
+
223
+
224
+
225
+ ---- 2017/01/15 16:50追記 ----
226
+
227
+ 全体の流れをざっくりまとめると
228
+
229
+ Puthonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
230
+
231
+ その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
232
+
233
+ です。

3

質問への回答追記

2017/01/15 07:54

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -134,11 +134,21 @@
134
134
 
135
135
 
136
136
 
137
- チェック元となるテーブル構造は以下の通です。
137
+ マスタテーブル構造は以下の通です。(mst_nin_s6)
138
-
139
-
140
-
138
+
139
+
140
+
141
- ![イメージ説明](fd7c195f2bbcbf0e82e27647c1ace3a2.png)
141
+ ![mst_nin_s6](fd7c195f2bbcbf0e82e27647c1ace3a2.png)
142
+
143
+
144
+
145
+ チェック結果を入れるテーブル構造は以下の通りです。(input_nin_s6)
146
+
147
+ 中のデータは、mst_nin_s6のid値です。
148
+
149
+
150
+
151
+ ![input_nin_s6](8af1be41a7ed64eb9308745f6294f5c8.png)
142
152
 
143
153
 
144
154
 
@@ -201,3 +211,11 @@
201
211
 
202
212
 
203
213
  よろしくおねがいします!
214
+
215
+
216
+
217
+ ---- 16:40編集 -----
218
+
219
+ チェック元となるテーブルは、諸事情により公開することができません。申し訳ありません。
220
+
221
+ 中のデータ構造は、最初の方で定義している、数列Bとなります。

2

修正依頼に従って一部追記

2017/01/15 07:43

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  数列A
14
14
 
15
- 1|2|3|4|5
15
+ 1 | 2 | 3 | 4 | 5 | 6
16
16
 
17
17
 
18
18
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  数列B
24
24
 
25
- 5|7|11|9|4
25
+ 5 | 7 | 11 | 9 | 4
26
26
 
27
27
 
28
28
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- テーブル構造は以下の通です。
137
+ チェック元となるテーブル構造は以下の通です。
138
138
 
139
139
 
140
140
 
@@ -184,6 +184,14 @@
184
184
 
185
185
 
186
186
 
187
+ 実際にほしいデータは
188
+
189
+ 2,3,4,1 | 4,5 | 5,6,7 | 7,8,9 | <empty> | 11
190
+
191
+ です。
192
+
193
+
194
+
187
195
  なぜこのようなことが起こるのでしょうか。
188
196
 
189
197
 

1

書式の改善、一部ミスの修正

2017/01/15 03:31

投稿

atLast
atLast

スコア14

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  数列A
14
14
 
15
- 1|2|3|4|5!
15
+ 1|2|3|4|5
16
16
 
17
17
 
18
18
 
@@ -34,15 +34,15 @@
34
34
 
35
35
  AND(
36
36
 
37
- OR(5=1,7=1,11=1,9=1,4=1),
37
+ OR(5=1, 7=1, 11=1, 9=1, 4=1),
38
38
 
39
- OR(5=2,7=2,11=2,9=2,4=2),
39
+ OR(5=2, 7=2, 11=2, 9=2, 4=2),
40
40
 
41
- OR(5=3,7=3,11=3,9=3,4=3),
41
+ OR(5=3, 7=3, 11=3, 9=3, 4=3),
42
42
 
43
- OR(5=4,7=4,11=4,9=4,4=4),
43
+ OR(5=4, 7=4, 11=4, 9=4, 4=4),
44
44
 
45
- OR(5=5,7=5,11=5,9=5,4=5
45
+ OR(5=5, 7=5, 11=5, 9=5, 4=5
46
46
 
47
47
  )
48
48