2013-08-26 1 views
0

다른 날 나는 질문을했고, 내가 이것을 멀리 얻기 위해 도움이되었던 매우 도움이되는 약간의 정보를 받았다. 그러나 이제 UNION/GROUP BY를 사용하여 테이블에서 데이터를 가져 오는 데 문제가 있습니다.유니언 테이블 그룹화 및 조인. 문제가있는 것

다음 코드는 제가 시도한 것입니다. 그러나 나는 그것을 플레이어별로 그룹화하는 방법을 찾을 수없는 것 같습니다.

이렇게 표시됩니다. 난 그냥 그렇게이 코드를 수행 할 수있는 더 좋은 방법이 있다면 시작하고이

Jono - 4 - 1 

같이 표시해야하는 경우

Jono - 3 - 1 
Jono - 1 - 1 

, 나에게 알려주세요 :)

SELECT [Player],[Played],[Games Won] FROM 
(SELECT 
p1.displayname AS [Player], 
COUNT(p1.displayname) AS [Played], 
SUM(IIF(m.player2=m.winner, 1, 0)) AS [Games Won] 
FROM ((tblMatch m) 
INNER JOIN tblPlayers p1 ON m.player2=p1.id) 
WHERE m.season = 3 
GROUP BY p1.displayname 
UNION ALL 
SELECT 
p2.displayname AS [Player2], 
COUNT(p2.displayname) AS [Played], 
SUM(IIF(m.player1=m.winner, 1, 0)) AS [Games Won] 
FROM ((tblMatch m) 
INNER JOIN tblPlayers p2 ON m.player1=p2.id) 
WHERE m.season = 3 
GROUP BY p2.displayname) 

내 데이터베이스 레이아웃 :

tblPlayers (ID,FirstName,LastName,DisplayName,Handicap,Current) 
tblSeason (ID,Season) 
tblMatch (ID,MatchDate,Season,Player1,Player2,Player1Score,Player2Score,Winner) 

그리고 내가 정말로하고 싶은 것은 플레이어 이름이 Player1 또는 Player2 열에서 올 수 있고이 플레이어가 플레이하는 게임의 수를 세는 목록을 보여주는 것입니다.이 게임에서 게임에서이긴 횟수를 셉니다.

감사

답변

0

당신이 당신의 외부 쿼리에 의해 다른 그룹을 넣어하지 않을까요 :

SELECT [InnerQueryAlias].[Player], Sum([InnerQueryAlias].[Played]) AS SumOfPlayed, Sum([InnerQueryAlias].[Games Won]) AS [SumOfGames Won] 
FROM (SELECT 
p1.displayname AS [Player], 
COUNT(p1.displayname) AS [Played], 
SUM(IIF(m.player2=m.winner, 1, 0)) AS [Games Won] 
FROM ((tblMatch m) 
INNER JOIN tblPlayers p1 ON m.player2=p1.id) 
WHERE m.season = 3 
GROUP BY p1.displayname 
UNION ALL 
SELECT 
p2.displayname AS [Player2], 
COUNT(p2.displayname) AS [Played], 
SUM(IIF(m.player1=m.winner, 1, 0)) AS [Games Won] 
FROM ((tblMatch m) 
INNER JOIN tblPlayers p2 ON m.player1=p2.id) 
WHERE m.season = 3 
GROUP BY p2.displayname) AS [InnerQueryAlias] 
GROUP BY [InnerQueryAlias].[Player];