web-dev-qa-db-ja.com

一つのget_varステートメントで2つの合計を選択してください

私は以下を試しています

global $wpdb;
$sum = $wpdb->get_var("select sum(first), sum(second) from table where id > 1");

各リクエストから値を取得できません。私が試してみました

echo $test->sum(first);

私はASを含むようにSQL文を変更しようとしました

 $sum = $wpdb->get_var("select sum(first) as firstRequest, sum(second) as secondRequestfrom table where id > 1");

echo $test['firstRequest'];

foreachステートメントを試してみました

foreach($test as $tester){
  echo $tester['sum(first')];
}

そして

foreach($test as $tester){
  echo $tester['firstRequest'];
}

1つのget_varステートメントから複数の行の合計を取得する方法を教えてください。不可能で、5つの異なる行の合計が必要な場合、5つの別々のget_varステートメントを作成する必要がありますかこれが問い合わせ速度を低下させるでしょうか?もしそうなら、それは目立つことさえありますか?

$wpdb->get_var は、名前が示すとおりの動作をします。単一の値を返します。したがって、この:

$sum = $wpdb->get_var("select sum(first), sum(second) from sums_test where id > 1");
var_dump($sum);

sum(first)の結果を返します。結果の残りは失われます(キャッシュされているとは思いますが)。

必要なメソッドは get_row です。これは結果の完全な行を返します。

$sum = $wpdb->get_row("select sum(first) as first_sum, sum(second) as second_sum from sums_test where id > 1");
var_dump($sum);

PHPでデータを使いやすくするためにAS句も追加しました。 $sum->first_sum)$sum->second_sumなどを使用して、取得した数だけ結果を取得することができます。または、さらに動的なものを使用することもできます。

foreach ($sum as $k=>$v) {
  echo $k.' -> '.$v.'<br>';
}
1
s_ha_dum