2013-09-30 3 views
1

Я пытаюсь запросить $ wpdb, чтобы вернуть значение int числа пользователей в пользовательской таблице, которые записали многочасовую работу добровольца над набор целевых - эти часы должны были замедлителем (значение, установленное в = 1) - я это до сих пор:mysql select count (column) где сумма (столбец)> значение

EDIT - обновлен для использования в соответствии {} вокруг 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), однако, как только один из этих часов будет одобрен , этот запрос возвращает количество всех пользователей, которые регистрировались больше, чем целевые часы (независимо от того, были ли они одобрены или нет).

Любые указатели!

Приветствия

Ray

+0

Я немного ржавый на PHP, но почему ваш PHP переменные являются частью строки? –

+0

похоже, что в запросе нет ничего плохого. – AdrianBR

+0

@SergueiFedorov, вы можете использовать '' {$ var-> anything()} "', это фигурные скобки. –

ответ

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 '-'; 
}