настольная лига и прямой победитель матча - PullRequest
2 голосов
/ 01 мая 2011

У меня есть серия тегов кнопки.

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 Ответ

2 голосов
/ 01 мая 2011

Если вы считаете, что единственный способ узнать, что есть ничья, - это рассчитать баллы, используя запрос, который вы показали, вы можете заметить, что добавить информацию о победителе прямого матча в текущий запрос не так просто.

Я хотел бы рассмотреть вопрос о том, чтобы поместить ваш запрос в VIEW, а затем создать новый запрос для использования представления и подсчета общего победителя, где количество очков для двух команд равно.

Как я уже сказал в своем комментарии, что вы делаете, когда прямой матч является ничьей или когда более двух команд набирают одинаковое количество очков в конце соревнования? Эти случаи возможны, но трудны для написания решения.

Альтернативой является использование разницы в целях, но для этого может потребоваться, чтобы ваша лига изменила свои правила:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...