2012-07-13 3 views
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 명의 플레이어가있는 통계 테이블입니다. 나는 모든 선수를 끌어 들이고 그에 따라 주문하려고합니다.MySQL 쿼리 - 수행 방법을 찾을 수 없습니다.

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 

.

+0

테이블에 문자열이 없어야하며 테이블 테이블의 이름도 지정하면 안됩니다. – Ghost

+0

@Ghost 실제 테이블은 더 복잡하며 숫자로만 구성됩니다. 나는이 질문에 대해 이것을 만들었다. – domino

+0

@Ghost 왜 테이블에 문자열이 없어야합니까? – octern

답변

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 

이렇게해야합니다.

더 이상 도움이 필요하면 알려주세요.

+0

신난다. 고마워. – domino

관련 문제