2014-07-09 2 views
0

나는 테이블을 가지고 있습니다. 결과는 세 가지로 반환되지만MySQL에서 복수 선택 쿼리

home team | away team | attendance | home or away| 
     SD |  WP | SD OVAL |  4000 | H | 
     WP |  SD | SD OVAL |  4000 | A | 

나는, UNION 나에게 최상의 결과를 제공하지만 그런 내가 시도

Team | Home Total | Home Average | Away Total | Away Average | Total | Average | 
    SD |  4000 |   4000 |   0 |   0 | 4000 | 4000 | 
    WP |   0 |   0 |  4000 |  4000 | 4000 | 4000 | 

는, 조인과 조합으로 표시 한 테이블을 생성 할 수 있도록하려면 열

Team, HomeAttendance, AveHomeAttendance 

이 내 쿼리입니다은

(I는 MYSQL 여전히 새로운 오전) 0
+0

을 당신은 무엇을 하시겠습니까?'가정이나 away' 열에? 두 팀을 각 레코드에 나열하면이 필드는 무엇을 의미합니까? – Sablefoste

+0

테이블의 목적은 한 시즌 동안 각 팀의 총 출석과 평균 출석을 나열하는 것입니다. 테이블의 집 또는 자리 비움 열에는 홈 게임의 경우 'H'가 자리 비움 게임의 경우 'A'가 채워집니다. – waflfootyfacts

+0

출석은 홈 팀과 정말로 관련이 있습니까? 항상 홈 팀이 하나 뿐이므로 집이나 자리가없는 이유는 무엇입니까? 그것이 정말로 무엇을 의미합니까? –

답변

0

당신의 갱신을 바탕으로, 당신은 JOIN 대신 UNION을 사용할 수

SELECT total.HomeTeam AS Team, 
      IFNULL(SUM(home.Attendance),0) AS HomeAttendance, 
      IFNULL(ROUND(AVG(home.Attendance),0),0) AS AveHomeAttendance, 
      IFNULL(SUM(away.Attendance),0) AS AwayAttendance, 
      IFNULL(ROUND(AVG(away.Attendance),0),0) AS AveAwayAttendance, 
      IFNULL(SUM(total.Attendance),0) AS TotalAttendance, 
      IFNULL(ROUND(AVG(total.Attendance),0),0) AS AveTotalAttendance 
    FROM MatchDetails total 
LEFT JOIN MatchDetails home 
     ON home.id = total.id AND home.HA = 'H' 
LEFT JOIN MatchDetails away 
     ON away.id = total.id AND away.HA = 'A' 
    WHERE total.Season = 2014 
GROUP BY total.HomeTeam; 

Live DEMO

+0

화려한 Prix - 치료를했는데 - 고마워. :) – waflfootyfacts