2011-04-30 2 views
2

버튼 태그가 있습니다.테이블 리그 및 다이렉트 매치 승자

SELECT team, COUNT(team) AS pld, 
    SUM(IF(Pts = 3, 1, 0)) AS W, 
    SUM(IF(Pts = 1, 1, 0)) AS D, 
    SUM(IF(Pts = 0, 1, 0)) AS L, 
    SUM(Pts) AS Pts, 
    SUM(GF) AS GF, 
    SUM(GA) AS GA, 
    SUM(GF) - SUM(GA) AS GD 
FROM ( 
    SELECT home_team_id AS team, 
     home_goal_number AS GF, 
     away_goal_number AS GA, 
     CASE 
     WHEN home_goal_number > away_goal_number 
      THEN 3 
     WHEN home_goal_number = away_goal_number 
      THEN 1 
     ELSE 0 
     END AS Pts 
    FROM matches 
    UNION ALL 
    SELECT away_team_id AS team, 
     away_goal_number AS GF, 
     home_goal_number AS GA, 
     CASE 
     WHEN away_goal_number > home_goal_number 
      THEN 3 
     WHEN away_goal_number = home_goal_number 
      THEN 1 
     ELSE 0 
     END AS Pts 
     FROM matches 
) AS tab 
GROUP BY team 
ORDER BY Pts DESC 

완벽하게 작동합니다. 단 하나의 문제가 있습니다. 두 팀이 같은 점수로 리그를 끝내면 모호성을 제거하는 첫 번째 방법은 누가 직접 매치에서 우승하는지 이해하는 것입니다.

어떻게하면이 쿼리를 수정할 수 있습니까?

+1

을 변경 골 득실을 사용하지만 당신의 리그가 필요할 수있다? – Tony

답변

2

당신이 보여준 쿼리를 사용하여 포인트를 계산하는 것이 유일한 방법이라고 생각한다면 직접 쿼리 승자 정보를 현재 쿼리에 추가하는 것이 쉬운 일이 아니라는 것을 알 수 있습니다.

조회에 넣은 쿼리를 작성한 다음보기를 사용하고 두 팀의 점수가 같은 전체 우승자를 계산하는 새 쿼리를 만드는 것이 좋습니다.

내 의견에서 말했듯이, 직접 경기가 추첨 일 때 또는 경쟁이 끝난 시점에서 두 개 이상의 팀이 같은 점수를 가질 때 당신은 무엇을합니까? 이러한 경우는 가능하지만 솔루션을 코딩하기가 어렵습니다.

대안은 자신의 규칙 : 당신이 직접 경기가 무승부 인 경우 어떻게해야합니까

+0

+1보기를 언급합니다. – a1ex07

+0

heheh 저는 "웹 사이트 사람"이 아니고 리그 매니저입니다^_ ^ –

관련 문제