2013-05-14 57 views
0

我有以下代碼,並且我想根據他的總餘額僅獲得用戶的聯盟排名。我怎樣才能做到這一點?如何獲得使用MySQL的MySQL查詢排名

// Set League Rank by User 
global $post; 
$post_author = $post->post_author; 
$post_status = 'publish'; 
$meta_key = 'balance'; 
$rank = $wpdb->get_var($wpdb->prepare(
    " 
    SELECT *, @rownum := @rownum + 1 from 
    (
    SELECT 
     SUM(meta_value) as balance, 
    FROM {$wpdb->postmeta} pm 
    INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID 
    JOIN (SELECT @curRow := 0) r; 
    WHERE pm.meta_key = %s AND p.post_author = %s AND p.post_status = %s 
    order by balance desc)x, (SELECT @rownum := 0) r 
    ", 
    $meta_key, $post_author, $post_status 
    )); 

可以幫助我嗎?

謝謝。

+0

你可以發佈有問題的兩個表的表定義嗎? – Orangepill 2013-05-14 15:08:53

+0

你在哪裏設置$ meta_key – Anigel 2013-05-14 15:14:05

+0

這段代碼很適合檢索每個用戶的餘額。我需要的是獲得排名,這是表中不存在的列。 – qebas 2013-05-14 15:15:02

回答

0

嘗試類似的東西:

SELECT 
    ROUND (SUM(meta_value),2) as balance, 
    @curRow := @curRow + 1 AS rank 
FROM {$wpdb->postmeta} pm 
INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID 
JOIN (SELECT @curRow := 0) r; 
WHERE pm.meta_key = %s AND p.post_author = %s AND p.post_status = %s 
order by balance desc 

我可能誤會你是什麼意思等級,所以如果這不起作用,請進一步說明正是你所需要的。

+0

謝謝你的回覆,不幸的是我試了一下,它不起作用。我的意思是一個排名最高的用戶排名第一的排名表,依此類推。餘額排序每個用戶的等級。 – qebas 2013-05-14 15:27:28

+0

我已經更新了上面的代碼,看看能否更好地說明我需要什麼。 – qebas 2013-05-14 15:42:07