2013-04-22 53 views
0

我想根据Wordpress meta_values来计算产量,我使用下面的MySQL语句,该语句不工作。 SUM(returned.meta_value + staked.meta_value)-SUM(staked.meta_value))/ SUM(staked.meta_value))* 100)不返回任何值。MySQL中的产量计算

有人可以帮我解决下面的表达有什么问题。

谢谢。

global $post; 
$post_author = $post->post_author; 
$post_status = 'publish'; 
$yield = $wpdb->get_var($wpdb->prepare(
    " 
    SELECT (ROUND((((SUM(returned.meta_value+staked.meta_value)-SUM(staked.meta_value))/SUM(staked.meta_value))*100),2),2) 
    FROM {$wpdb->posts} p 
    JOIN {$wpdb->users} u ON p.post_author = u.ID 
    LEFT JOIN {$wpdb->postmeta} staked 
     ON p.ID = staked.post_id AND staked.meta_key = 'staked' 
    LEFT JOIN {$wpdb->postmeta} returned 
     ON p.ID = returned.post_id AND returned.meta_key = 'returned' 
    WHERE p.post_author = %s AND p.post_status = %s 
    ", 
    $post_author, $post_status 
    )); 

回答

0

您的查询没有意义。 select声明使用别名balancebetfrom子句具有别名pmposts

你的意思是?

SELECT (ROUND((((SUM(pm.meta_value+pm.meta_value)-SUM(pm.meta_value))/SUM(pm.meta_value))*100),2),2) 
FROM {$wpdb->postmeta} pm INNER JOIN 
    {$wpdb->posts} p 
    ON pm.post_id = p.ID 
WHERE pm.meta_key = %s AND pm.meta_key1 = %s AND p.post_author = %s AND 
     Month(p.post_date) = MONTH(CURRENT_DATE) AND p.post_status = %s 
+0

好的,我应该继续在select语句中使用别名并更改from,反之亦然。返回和放样是meta_keys,我想返回它们的值来计算收益率。请你帮忙吗? – qebas 2013-04-22 14:40:05

+0

@qebas。 。 。在'select'语句中使用别名,只需将它们更改为正确的别名即可。 – 2013-04-22 14:43:58

+0

我试着用上面的语句,它仍然不起作用,没有返回值。 – qebas 2013-04-22 14:51:56