2013-09-30 126 views
1

我在查詢$ wpdb以獲取自定義表格中記錄了大量小時志願者工作的用戶數量的int值設定的目標 - 這些時間需要已經緩和(值設置爲= 1) - 我有這個至今:mysql select count(column)where sum(column)> value

編輯 - 更新查詢中使用一致的{}周圍的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} 
"); 

如果沒有任何小時被批准(moderated = 0),則返回正確的值'0',但只要其中一個用戶小時被批准,此查詢將返回所有記錄時間超過目標小時數的用戶的計數(無論他們是否已被批准)。

任何指針!

乾杯

+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 '-'; 
} 
相關問題