web-dev-qa-db-fra.com

Sélectionnez deux sommes avec une seule instruction get_var

J'essaie ce qui suit

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

Je ne parviens pas à obtenir les valeurs de chaque demande. j'ai essayé

echo $test->sum(first);

J'ai essayé de changer l'instruction SQL pour inclure AS

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

echo $test['firstRequest'];

J'ai essayé une déclaration foreach

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

et

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

Comment puis-je récupérer la somme de plusieurs lignes d'une seule instruction get_var? Si ce n'est pas possible et que j'ai besoin de la somme de 5 lignes différentes, dois-je créer 5 instructions get_var distinctes? Est-ce que cela diminuerait la vitesse d'interrogation, si oui, est-ce même perceptible?

1

$wpdb->get_var fera exactement ce que le nom suggère - renverra une valeur unique. Donc ça:

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

Retourne le résultat de sum(first). Le reste du résultat est perdu (bien que caché je crois).

La méthode que vous souhaitez utiliser est get_row , qui renverra une ligne complète de résultats.

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

J'ai ajouté des clauses AS afin de faciliter l'utilisation des données en PHP. Vous pouvez maintenant obtenir vos résultats avec $sum->first_sum), $sum->second_sum et ainsi de suite autant de fois que vous récupérez, ou vous pouvez utiliser quelque chose de plus dynamique, comme:

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