2
INSERT INTO `table` (`game_id`, `first`, `second`, `third`)
VALUES
    (1, 'jack', 'joe', 'pat'),
    (2, 'jack', 'joe', 'jess'),
    (3, 'pat', 'jess', 'jack'),
    (4, 'pat', 'jess', 'jack');

これは、各ゲームの上位 3 人のプレーヤーを含む統計表です。私はすべてのプレーヤーを引っ張って、それに応じてそれらを注文しようとしています.

First place - 3 points
Second place - 2 points
Third place - 1 point

したがって、次のように返されます。

id  player  points
1   jack    8
2   pat     7
3   jess    5
4   joe     4

1 つのクエリでこれを行う方法がわかりません。

4

1 に答える 1

3
Select player, sum(points) as points from (
Select `first` as player, count(`first`)*3 as points From gameStats group by `first` 
union all
Select `second` as player, count(`second`)*2 as points From gameStats group by `second` 
union all
Select `third` as player, count(`third`)*1 as points From gameStats group by `third` ) as tmp group by player

これでうまくいくはずです。

さらにサポートが必要な場合はお知らせください。

于 2012-07-13T17:59:46.087 に答える