2012-11-21 38 views
-1

我想顯示帳戶的最高等級字符和他們的時間總和在表帳戶的統計信息是1只有一個查詢。獲得最高和兩個表中的值的總和

我有兩個表下面的數據:

表:應收:

Id| Username |Stats 
1 | player1 |1 
2 | goodman |1 
3 | goodbat |1 
4 | ashasdd |0 

表:性狀:

Guid| Account | Name | Rank | Time | 
213 | 1 | fres | 2 | 51 | 
214 | 2 | sdg2 | 3 | 12 | 
215 | 2 | fgax | 4 | 99 | 
216 | 3 | zFvx | 8 | 23 | 
217 | 3 | Sgzs | 2 | 13 | 

輸出/結果:(與他們的最高等級的性格和他們的時間總計顯示賬號的角色)

Username : player1 | Name: fres(Rank:2) |Time : 51 
Username : goodman | Name: fgax(Rank:4) |Time : 111 
Username : goodbat | Name: zFvx(Rank:8) |Time : 36 

有什麼簡單的MySQL查詢?

我的壞查詢:(不工作)

SELECT a.username, a.email, c.name, SUM(c.time), c.rank 
FROM `auth`.`account` a, `characters`.`characters` c 
WHERE a.id=c.account 
ORDER BY c.rank ASC 
LIMIT 20 
+0

我添加了我的錯誤查詢... – Root125

+0

您期望在'rank'結果中有什麼價值?這是不明確的,因爲您在字符表中的每個帳戶ID有多個等級。請在問題中包含所需的輸出。 – Madbreaks

+0

結果必須以每個帳戶字符的最高等級返回。 – Root125

回答

1

應該足夠..我想。

SELECT c.Account, a.Username, c.Name, MAX(c.Rank) as maxrank, SUM(c.TIME) as sumtime FROM characters c LEFT JOIN Accounts a ON a.Id=c.Account GROUP By c.Account; 
+1

你怎麼知道帳號是id? – Hituptony

+1

我可以讀,可以嗎? – Rufinus

+0

你投票給我,因爲你不能讀...哇...不錯的社區 – Rufinus

0

像這樣的東西可能會奏效

SELECT username, name, d.rank, c.Time 
FROM (

    SELECT a.Username, b.account, MAX(b.Rank) AS rank, SUM(b.Time) AS TIME 
    FROM accounts a 
    INNER JOIN characters b ON a.ID = b.Account 
    WHERE a.stats =1 
    GROUP BY a.Username 
) AS c 
JOIN characters d ON d.account = c.account 
AND d.rank = c.rank 
ORDER BY rank 

不知道如何做到這一點的只有一個選擇,因爲壽,那麼你可能會得到錯誤的名字,那不是與最大等級註冊。