-1

最高ランクの文字と時間の合計を含むアカウントを表示したいのですが、テーブルアカウントの統計1は1つのクエリに含まれています。

以下のデータを持つ2つのテーブルがあります:

表:アカウント:

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
4

2 に答える 2

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;
于 2012-11-21T18:15:25.223 に答える
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

間違った名前を取得する可能性があるため、1回の選択でそれを行う方法がわからないため、最大ランクに登録されていません。

于 2012-11-21T18:38:12.760 に答える