2011-05-06 4 views
2

게임 응용 프로그램 사용자에게 통계를 가져 오려고하지만 여러 쿼리를 만들어야하는 데 도움이 필요합니다. 표 : 사용자 ID (X의 INT), 결과 (승리와 손실), 인종 (A, B 및 C) 나는 카운트를 가져 오기 위해 지금 필요한동일한 테이블에있는 두 개의 서로 다른 값을 기준으로 카운터를 가져옵니다.

이것은 짧은 순간에 모습입니다 각 레이스 우승과 손실 :

Select count(outcome) as win from games where userid = X and outcome = 'win' AND race = A 

Select count(outcome) as loss from games where userid = X and outcome = 'loss' AND race = A 

Select count(outcome) as win from games where userid = X and outcome = 'win' AND race = B 

Select count(outcome) as loss from games where userid = X and outcome = 'loss' AND race = B 

Select count(outcome) as win from games where userid = X and outcome = 'win' AND race = C 

Select count(outcome) as loss from games where userid = X and outcome = 'loss' AND race = C 

그런 다음 나는 기본적으로 그 이후의 PHP에서 그들을 계산하지만 게임의 많은 수의 데이터베이스에있을 때이 터무니없이 느린 방법입니다.

그래서 나는 기본적으로 쿼리를 갖고 싶어 그 같은 인종 그룹 :

인종 | 승 | 손실

A_ _ ___X_ ___ _x

B_ _ ___X_ ___ _x

C_ _ ___X_ ___ _x

내가 SQL의 더 복잡한 형태 때문에 최적화에 대한 어떤 제안이 쿼리 도움이 될 것 아주 새로운 해요.

감사합니다.

답변

3
SELECT race, 
     COUNT(CASE 
       WHEN outcome = 'win' THEN 1 
      END) AS win, 
     COUNT(CASE 
       WHEN outcome = 'loss' THEN 1 
      END) AS loss 
FROM games 
WHERE userid = X 
     AND race IN ('A', 'B', 'C') 
GROUP BY race 
+0

진정한 걸작은 예상보다 좋았습니다. 감사. – Alexander

관련 문제