如何使用另一个元键获取usermeta键的和值

5hcedyr0  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(215)

我有两个元键:us\u points和agent\u id
我需要为每个用户汇总所有代理id相同的us\积分值。
以下是我尝试的:

$cuser = wp_get_current_user(); $a_id = $cuser->agent_id; 
global $wpdb;
$result = $wpdb->get_col("SELECT sum(meta_value) FROM $wpdb->usermeta WHERE meta_key = 'us_points' AND agent_id = $a_id" );
echo $result[0];

如果我删除并且agent\u id=$a\u id,它将显示网站中所有用户的总和,但我只需要显示agent\u id中的meta key值common/matching的总和
谢谢你的帮助。

ct3nt3jp

ct3nt3jp1#

尝试这样做,它应该以代理id元密钥为目标,然后在求和之前按相同的代理id值对记录进行分组。

$result = $wpdb->get_col("SELECT sum(meta_value) FROM $wpdb->usermeta WHERE meta_key = 'us_points' GROUP BY meta_value HAVING 'meta_key' = 'agent_id'" );
wvmv3b1j

wvmv3b1j2#

$users = get_users();
$agent_points = array();

foreach( $users as $user ) {
   $agent_points[] = array(
       'agent_id'  => $user->agent_id,
       'us_points' => $user->us_points,
   );
}
``` `$agent_points` 预计在结构中:

Array
(
[0] => Array
(
[agent_id] => 1
[us_points] => 30
)

[1] => Array
    (
        [agent_id] => 4
        [us_points] => 10
    )

[2] => Array
    (
        [agent_id] => 4
        [us_points] => 30
    )

[3] => Array
    (
        [agent_id] => 1
        [us_points] => 20
    )

)

那么,

$results= array();

foreach( $agent_points as $values ) {
foreach( $values as $key => $value ) {

    if( 'agent_id' === $key ) {
        $results[ $value ] += $values['us_points'];
    }

}
}

预期 `$results` 在 `agent_id => us_points` 一对:

Array
(
[1] => 50
[4] => 40
)

相关问题