2012-08-04 2 views
1
SELECT COUNT(m.winner = p.userName) AS wins, YEAR(m.datePlayed) AS year, DATE_FORMAT(m.datePlayed, '%M') AS month, COUNT(*) as games FROM allMatches AS m LEFT JOIN playerUsers AS p ON m.season = p.season AND (m.player1 = p.userName OR m.player2 = p.userName) WHERE p.realName = '$realName' AND m.winner != '' AND m.canceled != '1' GROUP BY YEAR(m.datePlayed), MONTH(m.datePlayed)"; 

우리는 조인 할 2 개의 테이블 인 allMatches 및 playerUsers를 보유하고 있습니다. PlayerUser는 주어진 시즌의 allMatches 테이블에서 player1 또는 player2 (그리고 아마도 우승자)와 일치하는 사용자 이름을가집니다.행 개수 및 값 개수 일치 개수

나는 경기 수 (경기 수)와 그들이 얻은 게임 수 (playerUsers의 사용자 이름이 allMatch의 승자와 일치하는 곳)를 계산하고 싶습니다. 위의 SQL 문은 동일한 숫자로 wins와 games를 반환합니다. 동일한 SQL 문에서 승리 및 게임 수를 세는 방법이 있습니까?

답변

2

사용 SUM 대신 COUNT의는 승리의 수를 계산합니다 :

SELECT SUM(m.winner = p.userName) AS wins, ... 

부울 식을 0과 1 중 하나로 평가 등 SUM 당신에게 표현이었다 행의 총 수를 제공하기 때문에 그것은 작동 참된.