2012-11-05 4 views
0

두 개의 테이블과 Players라는 하나의 테이블과 하나의 상이라고하는 테이블이 있습니다. 최종 사용자는 플레이어에게 "상"을주고, 플레이어는 동일한 상을 여러 번받을 수 있습니다.SQL에서 각 플레이어의 보너스 합계를 얻는 방법

Awards Table 
----+------------------------------------------------------------------------+ 
| ID | name        | player_id       | 
+----+-----------------------------------------------------------------------+ 
| 1 | Free-throw Excerpt    | 1         | 
| 2 | Free-throw Excerpt    | 6         | 
| 3 | Top Earner      | 1         | 
| 4 | Top Player      | 5         | 
| 5 | Free-throw Excerpt    | 1         | 
| 6 | Free-throw Excerpt    | 1         | 
| 7 | Top Earner      | 1         | 
| 8 | Top Player      | 1         | 
     ... 
+----+----------------------------------------------------------------------- 


`Players Table` 
----+------------------------------------------------------------------------+ 
| ID | name                 | 
+----+-----------------------------------------------------------------------+ 
| 1 | Player A                | 
| 2 | Player B                | 
| 3 | Player C                | 
| 4 | Player D 
     ...                 | 
+----+----------------------------------------------------------------------- 

내 앱에는 각 플레이어가 페이지를 가지고 있으며 그 페이지에서 플레이어가 획득 한 모든 상을 표시하고 싶습니다. 예를 들어, 플레이어 B의 페이지 :

플레이어 A 통계 :

  • 무료 던져 발췌 : 3 표
  • 최고 흑장미 : 2 투표
  • 톱 플레이어 : 1 투표

플레이어 A에게 주어진 모든 상을 받으려면 상금 테이블을 쿼리 할 수 ​​있습니다. 그러나 여기에 붙어있어서 어디로 가야할지 잘 모릅니다. 받은 상금의 수를 계산하려면 COUNT (*)를해야합니까? (톱 플레이어 1 명, 무료 던전 발췌 3 명).

감사합니다.

+2

MySql의 GROUP BY 연산을 보면 필요한 것을 수행하는 데 도움이됩니다. –

답변

4

당신이 옳습니다. 그룹별로 계산하기

Select a.Name, Count(*) AS Total From Awards a 
Where a.PlayerID = 1 
Group By a.Name 
Order By Count(*) DESC 
+0

감사합니다. –

관련 문제