mysql select count(列)其中sum(列)>值

时间:2013-09-30 10:12:54

标签: mysql wordpress wpdb

我正在尝试查询$ wpdb以获取自定义表中已记录志愿者工作数量超过设定目标的用户数量的int值 - 这些小时数需要经过审核(值设置) to = 1) - 到目前为止我有这个:

编辑 - 更新以在查询中使用围绕php变量的一致{} -

$target = get_post_meta($post->ID, 'target', true) ? (int)get_post_meta($post->ID, 'target', true) : 100;

$awards = $wpdb->get_var("
    SELECT user_id 
    FROM {$this->options['rewards_logging']} 
    WHERE moderated = 1 AND reward_id = {$post->ID} 
    GROUP BY user_id 
    HAVING sum(hours) > {$target}
");

如果没有批准任何小时(审核= 0),则返回正确的值'0',但是只要其中一个用户小时被批准,此查询将返回已记录更多用户的所有用户的计数比目标时间(无论是否已经批准)。

任何指针!

干杯

1 个答案:

答案 0 :(得分:1)

似乎我试图使用$ wpdb-> get_var返回一个变量,当我真的需要整个结果集时:

$awards = $wpdb->get_results("
     SELECT user_id
     FROM {$this->options['rewards_logging']} 
     WHERE moderated = 1 AND reward_id = {$post->ID} 
     GROUP BY user_id
     HAVING sum(hours) > {$target}
");

然后我可以检查数据并显示结果 - 等等......:

if ( count($awards) > 0 ) {

     #var_dump($awards);
     echo '<span class="awards-notice">'.count($awards).'</span>';
} else {
     echo '-';
}