質問編集履歴
7
コードを一部修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -81,6 +81,7 @@
|
|
81
81
|
# nin s6
|
82
82
|
# num1からnum5は、チェック元テーブルの中から取得した物(数列B)
|
83
83
|
nin6id = get_nin_id('s6', num1, num2, num3, num4, num5)
|
84
|
+
insert(...)
|
84
85
|
```
|
85
86
|
|
86
87
|
SQLにすると以下になります。
|
6
質問内容の調整、typoの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,14 +4,19 @@
|
|
4
4
|
|
5
5
|
そこで質問なのですが、以下のような数列があるとします。
|
6
6
|
|
7
|
-
数列A
|
7
|
+
数列A(mst_nin_s6の中身(抜粋))
|
8
8
|
1 | 2 | 3 | 4 | 5 | 6
|
9
|
+
1 | 2 | 3 | 4 | 5 | 7
|
10
|
+
...
|
11
|
+
6 | 7 | 8 | 9 | 10 | 11
|
12
|
+
数値は最大11までで、全てのパターンが網羅されているものとします。
|
9
13
|
|
10
14
|
上記数列に対して、以下の数列が存在するかを確認したいです。
|
11
15
|
|
12
|
-
数列B
|
16
|
+
数列B(チェック元となるテーブルの中身)
|
13
17
|
5 | 7 | 11 | 9 | 4
|
14
18
|
|
19
|
+
|
15
20
|
excelでの計算式は以下の通りです。
|
16
21
|
```EXCEL
|
17
22
|
IF(
|
@@ -20,18 +25,21 @@
|
|
20
25
|
OR(5=2, 7=2, 11=2, 9=2, 4=2),
|
21
26
|
OR(5=3, 7=3, 11=3, 9=3, 4=3),
|
22
27
|
OR(5=4, 7=4, 11=4, 9=4, 4=4),
|
23
|
-
OR(5=5, 7=5, 11=5, 9=5, 4=5
|
28
|
+
OR(5=5, 7=5, 11=5, 9=5, 4=5)
|
24
29
|
)
|
25
30
|
,0,1)
|
26
31
|
```
|
27
|
-
数列Bを1
|
32
|
+
数列Bを1つずつに分解して、数列Aに含まれるかを確認している計算式です。
|
28
33
|
|
29
34
|
|
30
|
-
上記Excelの計算式を、Pythonにて実装しようとしています。
|
35
|
+
上記Excelの計算式を、PythonとPHPにて実装しようとしています。
|
31
36
|
|
32
|
-
|
37
|
+
---
|
33
38
|
|
39
|
+
まず、以下のPythonを実行し、含まれるかどうかの判定をしています。
|
40
|
+
|
34
41
|
```Python
|
42
|
+
def get_nin_id(suffix, num1, num2, num3, num4, num5):
|
35
43
|
query = "select id from mst_nin_%s where " % (suffix)
|
36
44
|
if (suffix == 's8'):
|
37
45
|
for v in range(1, 6):
|
@@ -53,6 +61,26 @@
|
|
53
61
|
varname = "num" + str(v)
|
54
62
|
query += "'%s' in (num1, num2, num3, num4, num5, num6)" % (eval(varname))
|
55
63
|
...
|
64
|
+
|
65
|
+
cur = con.cursor()
|
66
|
+
cur.execute(query)
|
67
|
+
rows = cur.fetchall()
|
68
|
+
if (rows is None):
|
69
|
+
return 0
|
70
|
+
else:
|
71
|
+
ids = ''
|
72
|
+
for row in rows:
|
73
|
+
if ids == '':
|
74
|
+
ids = str(row['id'])
|
75
|
+
else:
|
76
|
+
ids += ',' + str(row['id'])
|
77
|
+
|
78
|
+
return ids
|
79
|
+
...
|
80
|
+
|
81
|
+
# nin s6
|
82
|
+
# num1からnum5は、チェック元テーブルの中から取得した物(数列B)
|
83
|
+
nin6id = get_nin_id('s6', num1, num2, num3, num4, num5)
|
56
84
|
```
|
57
85
|
|
58
86
|
SQLにすると以下になります。
|
@@ -67,14 +95,17 @@
|
|
67
95
|
```
|
68
96
|
|
69
97
|
マスタテーブル構造は以下の通です。(mst_nin_s6)
|
70
|
-
|
98
|
+
中身は、数列Aのものです。
|
71
99
|

|
72
100
|
|
73
101
|
チェック結果を入れるテーブル構造は以下の通りです。(input_nin_s6)
|
74
|
-
中のデータは、mst_nin_s6のid値です。
|
102
|
+
中のデータは、mst_nin_s6のid値(カンマ区切り)です。
|
75
103
|
|
76
104
|

|
77
105
|
|
106
|
+
---
|
107
|
+
-------------- ここから、PHPでの処理 --------------
|
108
|
+
|
78
109
|
存在するかを確認するクエリは以下の通です。
|
79
110
|
|
80
111
|
```SQL
|
@@ -112,6 +143,6 @@
|
|
112
143
|
|
113
144
|
---- 2017/01/15 16:50追記 ----
|
114
145
|
全体の流れをざっくりまとめると
|
115
|
-
Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
|
146
|
+
Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6(数列B)とぶつけ、input_nin_s6に結果を入れる
|
116
147
|
その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
|
117
148
|
です。
|
5
typoの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -112,6 +112,6 @@
|
|
112
112
|
|
113
113
|
---- 2017/01/15 16:50追記 ----
|
114
114
|
全体の流れをざっくりまとめると
|
115
|
-
|
115
|
+
Pythonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
|
116
116
|
その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
|
117
117
|
です。
|
4
処理の流れを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -106,6 +106,12 @@
|
|
106
106
|
|
107
107
|
よろしくおねがいします!
|
108
108
|
|
109
|
-
---- 16:40編集 ----
|
109
|
+
---- 2017/01/15 16:40編集 ----
|
110
110
|
チェック元となるテーブルは、諸事情により公開することができません。申し訳ありません。
|
111
|
-
中のデータ構造は、最初の方で定義している、数列Bとなります。
|
111
|
+
中のデータ構造は、最初の方で定義している、数列Bとなります。
|
112
|
+
|
113
|
+
---- 2017/01/15 16:50追記 ----
|
114
|
+
全体の流れをざっくりまとめると
|
115
|
+
Puthonでチェック元となるテーブルから値を取得して、mst_nin_s6とぶつけ、input_nin_s6に結果を入れる
|
116
|
+
その後、PHPで、input_nin_s6をベースとしてmst_nin_s6とjoinして、結果を取得する
|
117
|
+
です。
|
3
質問への回答追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -66,10 +66,15 @@
|
|
66
66
|
|
67
67
|
```
|
68
68
|
|
69
|
-
|
69
|
+
マスタテーブル構造は以下の通です。(mst_nin_s6)
|
70
70
|
|
71
|
-

|
72
72
|
|
73
|
+
チェック結果を入れるテーブル構造は以下の通りです。(input_nin_s6)
|
74
|
+
中のデータは、mst_nin_s6のid値です。
|
75
|
+
|
76
|
+

|
77
|
+
|
73
78
|
存在するかを確認するクエリは以下の通です。
|
74
79
|
|
75
80
|
```SQL
|
@@ -99,4 +104,8 @@
|
|
99
104
|
|
100
105
|
足りない部分があれば、言って下さい。問題の無い範囲で追記します。
|
101
106
|
|
102
|
-
よろしくおねがいします!
|
107
|
+
よろしくおねがいします!
|
108
|
+
|
109
|
+
---- 16:40編集 -----
|
110
|
+
チェック元となるテーブルは、諸事情により公開することができません。申し訳ありません。
|
111
|
+
中のデータ構造は、最初の方で定義している、数列Bとなります。
|
2
修正依頼に従って一部追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
そこで質問なのですが、以下のような数列があるとします。
|
6
6
|
|
7
7
|
数列A
|
8
|
-
1|2|3|4|5
|
8
|
+
1 | 2 | 3 | 4 | 5 | 6
|
9
9
|
|
10
10
|
上記数列に対して、以下の数列が存在するかを確認したいです。
|
11
11
|
|
12
12
|
数列B
|
13
|
-
5|7|11|9|4
|
13
|
+
5 | 7 | 11 | 9 | 4
|
14
14
|
|
15
15
|
excelでの計算式は以下の通りです。
|
16
16
|
```EXCEL
|
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
```
|
68
68
|
|
69
|
-
テーブル構造は以下の通です。
|
69
|
+
チェック元となるテーブル構造は以下の通です。
|
70
70
|
|
71
71
|

|
72
72
|
|
@@ -91,6 +91,10 @@
|
|
91
91
|
SQLの戻り値に入ってしまっています。
|
92
92
|
このため、Excelでの判断結果と違う物になっている状態です。
|
93
93
|
|
94
|
+
実際にほしいデータは
|
95
|
+
2,3,4,1 | 4,5 | 5,6,7 | 7,8,9 | <empty> | 11
|
96
|
+
です。
|
97
|
+
|
94
98
|
なぜこのようなことが起こるのでしょうか。
|
95
99
|
|
96
100
|
足りない部分があれば、言って下さい。問題の無い範囲で追記します。
|
1
書式の改善、一部ミスの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
そこで質問なのですが、以下のような数列があるとします。
|
6
6
|
|
7
7
|
数列A
|
8
|
-
1|2|3|4|5
|
8
|
+
1|2|3|4|5
|
9
9
|
|
10
10
|
上記数列に対して、以下の数列が存在するかを確認したいです。
|
11
11
|
|
@@ -16,11 +16,11 @@
|
|
16
16
|
```EXCEL
|
17
17
|
IF(
|
18
18
|
AND(
|
19
|
-
OR(5=1,7=1,11=1,9=1,4=1),
|
19
|
+
OR(5=1, 7=1, 11=1, 9=1, 4=1),
|
20
|
-
OR(5=2,7=2,11=2,9=2,4=2),
|
20
|
+
OR(5=2, 7=2, 11=2, 9=2, 4=2),
|
21
|
-
OR(5=3,7=3,11=3,9=3,4=3),
|
21
|
+
OR(5=3, 7=3, 11=3, 9=3, 4=3),
|
22
|
-
OR(5=4,7=4,11=4,9=4,4=4),
|
22
|
+
OR(5=4, 7=4, 11=4, 9=4, 4=4),
|
23
|
-
OR(5=5,7=5,11=5,9=5,4=5
|
23
|
+
OR(5=5, 7=5, 11=5, 9=5, 4=5
|
24
24
|
)
|
25
25
|
,0,1)
|
26
26
|
```
|