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

質問編集履歴

6

再度修正

2016/10/15 09:37

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -78,10 +78,7 @@
78
78
  'period' => string '前期' (length=6)
79
79
  'fisperiod' => string '2015年6月期' (length=14)
80
80
 
81
-
82
81
  ```ここに言語を入力
83
- コード
84
-
85
82
  table $wpdb->zaimumaster
86
83
 
87
84
  array (size=3)
@@ -113,5 +110,4 @@
113
110
  'period' => string '前期' (length=6)
114
111
  'fisperiod' => string '2016年6月期' (length=14)
115
112
  'intperiod' => string '201606' (length=6)
116
-
117
113
  ```

5

修正

2016/10/15 09:37

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -80,6 +80,8 @@
80
80
 
81
81
 
82
82
  ```ここに言語を入力
83
+ コード
84
+
83
85
  table $wpdb->zaimumaster
84
86
 
85
87
  array (size=3)

4

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

2016/10/15 09:36

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -36,4 +36,80 @@
36
36
  where句でsecidとmax条件を絞るような方法はダメなのでしょうか?
37
37
  いろいろ調べたのですが、うまくいかなかったため、ご質問させていただきました。
38
38
 
39
- よろしくお願い申し上げます。
39
+ よろしくお願い申し上げます。
40
+
41
+ ---------------------------
42
+ 以下、追加の状況
43
+ A.ichi様にご教示頂いた方法で、データを取得することができたのですが、幾つかのカラムについて
44
+ 想定していないデータを持ってきてしまいます。
45
+ 実際のコードとテーブルの方がご理解いただきやすいと思いましたので
46
+ いかに記載します。
47
+
48
+ quote.phpで取得した配列の結果の結果をごらんください
49
+ 'xki' => string '28' (length=2)
50
+ 'fisperiod' => string '2015年6月期' (length=14)
51
+
52
+ について、table $wpdb->zaimumasterの配列(テーブル)にある通り
53
+ 本来はMAX値の201606のレコードであれば
54
+ 'xki' => string '30' (length=2)
55
+ 'fisperiod' => string '2016年6月期' (length=14)
56
+ を持ってこなければならないのに、intperiodが
57
+ 201512のMIN値のものを持ってきます。
58
+ 重ねてで申し訳ございませんが、よろしくお願い申し上げます。
59
+
60
+ ```
61
+ quote.php
62
+ $sql1 = $wpdb->prepare("SELECT*FROM $wpdb->zaimumaster t1 JOIN (SELECT secid,xki,fisperiod,max(intperiod) intperiod
63
+ FROM $wpdb->zaimumaster GROUP BY secid) t2 using(secid,intperiod) where t1.secid=%d",$secid);
64
+ $rows1 = $wpdb->get_results(($sql1), ARRAY_A);
65
+ var_dump($rows1);
66
+ ```
67
+ ```ここに言語を入力
68
+ quote.phpで取得した配列の結果
69
+
70
+ array (size=1)
71
+ 0 =>
72
+ array (size=25)
73
+ 'secid' => string 'ZZZZ' (length=4)
74
+ 'intperiod' => string '201606' (length=6)
75
+ 'id' => string '3' (length=1)
76
+ 'name' => null
77
+ 'xki' => string '28' (length=2)
78
+ 'period' => string '前期' (length=6)
79
+ 'fisperiod' => string '2015年6月期' (length=14)
80
+
81
+
82
+ ```ここに言語を入力
83
+ table $wpdb->zaimumaster
84
+
85
+ array (size=3)
86
+ 0 =>
87
+ array (size=25)
88
+ 'id' => string '1' (length=1)
89
+ 'name' => null
90
+ 'xki' => string '28' (length=2)
91
+ 'secid' => string 'ZZZZ' (length=4)
92
+ 'period' => string '3期前' (length=7)
93
+ 'fisperiod' => string '2015年6月期' (length=14)
94
+ 'intperiod' => string '201506' (length=6)
95
+ 1 =>
96
+ array (size=25)
97
+ 'id' => string '2' (length=1)
98
+ 'name' => null
99
+ 'xki' => string '29' (length=2)
100
+ 'secid' => string 'ZZZZ' (length=4)
101
+ 'period' => string '2期前' (length=7)
102
+ 'fisperiod' => string '2015年12月期' (length=15)
103
+ 'intperiod' => string '201512' (length=6)
104
+
105
+ 2 =>
106
+ array (size=25)
107
+ 'id' => string '3' (length=1)
108
+ 'name' => null
109
+ 'xki' => string '30' (length=2)
110
+ 'secid' => string 'ZZZZ' (length=4)
111
+ 'period' => string '前期' (length=6)
112
+ 'fisperiod' => string '2016年6月期' (length=14)
113
+ 'intperiod' => string '201606' (length=6)
114
+
115
+ ```

3

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

2016/10/15 09:35

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -16,13 +16,13 @@
16
16
  ```ここに言語を入力
17
17
  $secid=100;
18
18
  $sql1 = $wpdb->prepare("SELECT * FROM $wpdb->Atable WHERE secid=%d AND
19
- intperiod=(SELECT MAX(sales) from Atable)",$secid);
19
+ sales=(SELECT MAX(sales) from Atable)",$secid);
20
20
 
21
21
  *wordpressの$wpdbクラスを利用していてますが、通常のSQL文やPDOの記法でのご回答でも構いません。
22
22
  通常のPDOであれば以下のようになりますでしょうか。
23
23
 
24
24
  $sql1 = prepare("SELECT * FROM Atable WHERE secid=:secid AND
25
- intperiod=(SELECT MAX(sales) from Atable));
25
+ sales=(SELECT MAX(sales) from Atable));
26
26
  stmt->bindValue(':secid',$secid,PDO::PARAM_STR);
27
27
 
28
28
 

2

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

2016/10/15 08:19

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -9,8 +9,8 @@
9
9
  200 100
10
10
  300 1000
11
11
  ```
12
- ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:500,
12
+ ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:100,
13
- 1 sales:200のレコードです)
13
+ 1 sales:500のレコードです)
14
14
  これについて
15
15
 
16
16
  ```ここに言語を入力

1

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

2016/10/15 08:16

投稿

SugiuraY
SugiuraY

スコア318

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  200 100
10
10
  300 1000
11
11
  ```
12
- ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:100,
12
+ ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:500,
13
13
  1 sales:200のレコードです)
14
14
  これについて
15
15
 
@@ -28,6 +28,11 @@
28
28
 
29
29
  https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class
30
30
  ```
31
+ ```ここに言語を入力
32
+ var_dumpの結果
33
+ array (size=0)
34
+ empty
35
+ ```
31
36
  where句でsecidとmax条件を絞るような方法はダメなのでしょうか?
32
37
  いろいろ調べたのですが、うまくいかなかったため、ご質問させていただきました。
33
38