質問編集履歴

6

再度修正

2016/10/15 09:37

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -158,13 +158,7 @@
158
158
 
159
159
 
160
160
 
161
-
162
-
163
- ```ここに言語を入力
161
+ ```ここに言語を入力
164
-
165
- コード
166
-
167
-
168
162
 
169
163
  table $wpdb->zaimumaster
170
164
 
@@ -228,6 +222,4 @@
228
222
 
229
223
  'intperiod' => string '201606' (length=6)
230
224
 
231
-
232
-
233
- ```
225
+ ```

5

修正

2016/10/15 09:37

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -162,6 +162,10 @@
162
162
 
163
163
  ```ここに言語を入力
164
164
 
165
+ コード
166
+
167
+
168
+
165
169
  table $wpdb->zaimumaster
166
170
 
167
171
 

4

値を取得できましたが、想定とは異なる数値を取得しました。

2016/10/15 09:36

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -75,3 +75,155 @@
75
75
 
76
76
 
77
77
  よろしくお願い申し上げます。
78
+
79
+
80
+
81
+ ---------------------------
82
+
83
+ 以下、追加の状況
84
+
85
+ A.ichi様にご教示頂いた方法で、データを取得することができたのですが、幾つかのカラムについて
86
+
87
+ 想定していないデータを持ってきてしまいます。
88
+
89
+ 実際のコードとテーブルの方がご理解いただきやすいと思いましたので
90
+
91
+ いかに記載します。
92
+
93
+
94
+
95
+ quote.phpで取得した配列の結果の結果をごらんください
96
+
97
+ 'xki' => string '28' (length=2)
98
+
99
+ 'fisperiod' => string '2015年6月期' (length=14)
100
+
101
+
102
+
103
+ について、table $wpdb->zaimumasterの配列(テーブル)にある通り
104
+
105
+ 本来はMAX値の201606のレコードであれば
106
+
107
+ 'xki' => string '30' (length=2)
108
+
109
+ 'fisperiod' => string '2016年6月期' (length=14)
110
+
111
+ を持ってこなければならないのに、intperiodが
112
+
113
+ 201512のMIN値のものを持ってきます。
114
+
115
+ 重ねてで申し訳ございませんが、よろしくお願い申し上げます。
116
+
117
+
118
+
119
+ ```
120
+
121
+ quote.php
122
+
123
+ $sql1 = $wpdb->prepare("SELECT*FROM $wpdb->zaimumaster t1 JOIN (SELECT secid,xki,fisperiod,max(intperiod) intperiod
124
+
125
+ FROM $wpdb->zaimumaster GROUP BY secid) t2 using(secid,intperiod) where t1.secid=%d",$secid);
126
+
127
+ $rows1 = $wpdb->get_results(($sql1), ARRAY_A);
128
+
129
+ var_dump($rows1);
130
+
131
+ ```
132
+
133
+ ```ここに言語を入力
134
+
135
+ quote.phpで取得した配列の結果
136
+
137
+
138
+
139
+ array (size=1)
140
+
141
+ 0 =>
142
+
143
+ array (size=25)
144
+
145
+ 'secid' => string 'ZZZZ' (length=4)
146
+
147
+ 'intperiod' => string '201606' (length=6)
148
+
149
+ 'id' => string '3' (length=1)
150
+
151
+ 'name' => null
152
+
153
+ 'xki' => string '28' (length=2)
154
+
155
+ 'period' => string '前期' (length=6)
156
+
157
+ 'fisperiod' => string '2015年6月期' (length=14)
158
+
159
+
160
+
161
+
162
+
163
+ ```ここに言語を入力
164
+
165
+ table $wpdb->zaimumaster
166
+
167
+
168
+
169
+ array (size=3)
170
+
171
+ 0 =>
172
+
173
+ array (size=25)
174
+
175
+ 'id' => string '1' (length=1)
176
+
177
+ 'name' => null
178
+
179
+ 'xki' => string '28' (length=2)
180
+
181
+ 'secid' => string 'ZZZZ' (length=4)
182
+
183
+ 'period' => string '3期前' (length=7)
184
+
185
+ 'fisperiod' => string '2015年6月期' (length=14)
186
+
187
+ 'intperiod' => string '201506' (length=6)
188
+
189
+ 1 =>
190
+
191
+ array (size=25)
192
+
193
+ 'id' => string '2' (length=1)
194
+
195
+ 'name' => null
196
+
197
+ 'xki' => string '29' (length=2)
198
+
199
+ 'secid' => string 'ZZZZ' (length=4)
200
+
201
+ 'period' => string '2期前' (length=7)
202
+
203
+ 'fisperiod' => string '2015年12月期' (length=15)
204
+
205
+ 'intperiod' => string '201512' (length=6)
206
+
207
+
208
+
209
+ 2 =>
210
+
211
+ array (size=25)
212
+
213
+ 'id' => string '3' (length=1)
214
+
215
+ 'name' => null
216
+
217
+ 'xki' => string '30' (length=2)
218
+
219
+ 'secid' => string 'ZZZZ' (length=4)
220
+
221
+ 'period' => string '前期' (length=6)
222
+
223
+ 'fisperiod' => string '2016年6月期' (length=14)
224
+
225
+ 'intperiod' => string '201606' (length=6)
226
+
227
+
228
+
229
+ ```

3

再度、修正いたしました。

2016/10/15 09:35

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  $sql1 = $wpdb->prepare("SELECT * FROM $wpdb->Atable WHERE secid=%d AND
36
36
 
37
- intperiod=(SELECT MAX(sales) from Atable)",$secid);
37
+ sales=(SELECT MAX(sales) from Atable)",$secid);
38
38
 
39
39
 
40
40
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  $sql1 = prepare("SELECT * FROM Atable WHERE secid=:secid AND
48
48
 
49
- intperiod=(SELECT MAX(sales) from Atable));
49
+ sales=(SELECT MAX(sales) from Atable));
50
50
 
51
51
  stmt->bindValue(':secid',$secid,PDO::PARAM_STR);
52
52
 

2

誤りを修正いたしました。

2016/10/15 08:19

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
  ```
22
22
 
23
- ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:500,
23
+ ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:100,
24
24
 
25
- 1 sales:200のレコードです)
25
+ 1 sales:500のレコードです)
26
26
 
27
27
  これについて
28
28
 

1

内容の誤り、およびエラー結果(なし)を表示しました

2016/10/15 08:16

投稿

SugiuraY
SugiuraY

スコア317

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  ```
22
22
 
23
- ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:100,
23
+ ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:500,
24
24
 
25
25
  1 sales:200のレコードです)
26
26
 
@@ -58,6 +58,16 @@
58
58
 
59
59
  ```
60
60
 
61
+ ```ここに言語を入力
62
+
63
+ var_dumpの結果
64
+
65
+ array (size=0)
66
+
67
+ empty
68
+
69
+ ```
70
+
61
71
  where句でsecidとmax条件を絞るような方法はダメなのでしょうか?
62
72
 
63
73
  いろいろ調べたのですが、うまくいかなかったため、ご質問させていただきました。