お世話になります。
現在、以下のテーブルの状況です。
Atable secid sales 100 200 100 500 200 50 200 100 300 1000
ここでsecidカラムの中で100のgroupに属する最大のsalesのレコードを取得したいです。(つまりsecid:100,
1 sales:500のレコードです)
これについて
$secid=100; $sql1 = $wpdb->prepare("SELECT * FROM $wpdb->Atable WHERE secid=%d AND sales=(SELECT MAX(sales) from Atable)",$secid); *wordpressの$wpdbクラスを利用していてますが、通常のSQL文やPDOの記法でのご回答でも構いません。 通常のPDOであれば以下のようになりますでしょうか。 $sql1 = prepare("SELECT * FROM Atable WHERE secid=:secid AND sales=(SELECT MAX(sales) from Atable)); stmt->bindValue(':secid',$secid,PDO::PARAM_STR); 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
var_dumpの結果 array (size=0) empty
where句でsecidとmax条件を絞るような方法はダメなのでしょうか?
いろいろ調べたのですが、うまくいかなかったため、ご質問させていただきました。
よろしくお願い申し上げます。
以下、追加の状況
A.ichi様にご教示頂いた方法で、データを取得することができたのですが、幾つかのカラムについて
想定していないデータを持ってきてしまいます。
実際のコードとテーブルの方がご理解いただきやすいと思いましたので
いかに記載します。
quote.phpで取得した配列の結果の結果をごらんください
'xki' => string '28' (length=2)
'fisperiod' => string '2015年6月期' (length=14)
について、table $wpdb->zaimumasterの配列(テーブル)にある通り
本来はMAX値の201606のレコードであれば
'xki' => string '30' (length=2)
'fisperiod' => string '2016年6月期' (length=14)
を持ってこなければならないのに、intperiodが
201512のMIN値のものを持ってきます。
重ねてで申し訳ございませんが、よろしくお願い申し上げます。
quote.php $sql1 = $wpdb->prepare("SELECT*FROM $wpdb->zaimumaster t1 JOIN (SELECT secid,xki,fisperiod,max(intperiod) intperiod FROM $wpdb->zaimumaster GROUP BY secid) t2 using(secid,intperiod) where t1.secid=%d",$secid); $rows1 = $wpdb->get_results(($sql1), ARRAY_A); var_dump($rows1);
quote.phpで取得した配列の結果 array (size=1) 0 => array (size=25) 'secid' => string 'ZZZZ' (length=4) 'intperiod' => string '201606' (length=6) 'id' => string '3' (length=1) 'name' => null 'xki' => string '28' (length=2) 'period' => string '前期' (length=6) 'fisperiod' => string '2015年6月期' (length=14) ```ここに言語を入力 table $wpdb->zaimumaster array (size=3) 0 => array (size=25) 'id' => string '1' (length=1) 'name' => null 'xki' => string '28' (length=2) 'secid' => string 'ZZZZ' (length=4) 'period' => string '3期前' (length=7) 'fisperiod' => string '2015年6月期' (length=14) 'intperiod' => string '201506' (length=6) 1 => array (size=25) 'id' => string '2' (length=1) 'name' => null 'xki' => string '29' (length=2) 'secid' => string 'ZZZZ' (length=4) 'period' => string '2期前' (length=7) 'fisperiod' => string '2015年12月期' (length=15) 'intperiod' => string '201512' (length=6) 2 => array (size=25) 'id' => string '3' (length=1) 'name' => null 'xki' => string '30' (length=2) 'secid' => string 'ZZZZ' (length=4) 'period' => string '前期' (length=6) 'fisperiod' => string '2016年6月期' (length=14) 'intperiod' => string '201606' (length=6)
回答1件
あなたの回答
tips
プレビュー