比赛聚合 - 客场进球规则(足球/足球)

时间:2014-09-07 13:34:46

标签: mysql sql

首先,我搜索了我的问题的答案,但找不到。 我正在学习PHP(程序)和MySQL,我目前正在研究足球/足球 杯。

杯子的设置就像任何普通的欧洲杯一样,每支队伍都有两条腿(主场和客场),最佳阵容将进入下一轮。我的问题是我无法弄清楚如何实施客场进球规则。该规则意味着如果球队在Team Blue和Team Red之间的比赛中被束缚,则该配对的获胜者是得分最多的球队。在我的例子中,应该是Team Red。他们打入2球。

我的尝试是here

在我看来,解决方案是从联合中的第二个表中获取hgoal值。

 SELECT n.tname as hometeam,t.tname as awayteam,SUM(agoal),SUM(hgoal)
 FROM (
 SELECT id,date,hteam,ateam,hgoal,agoal FROM games
 UNION ALL
 SELECT id,date,ateam,hteam,agoal,**hgoal** FROM games **this table**/ )total

如果我使用total.agoal,我会从第一个表中获取值,但是我无法从第二个获得值。如果那不可能,那么我无法解决这个问题。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

为了好玩,我将hgoal / agoal重命名为hscore / ascore ......

SELECT tname Team
     , SUM(p) P
     , SUM(w) W
     , SUM(d) D
     , SUM(l) L
     , SUM(f) F
     , SUM(a) A
     , SUM(gd) GD
     , SUM(pts) PTS
  FROM 
     ( SELECT hteam Team
            , 1 P
            , IF(hscore > ascore,1,0) w
            , IF(hscore = ascore,1,0) d
            , IF(hscore < ascore,1,0) l
            , hscore f
            , ascore a
            , hscore-ascore gd
            , CASE WHEN hscore > ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END pts   
         FROM games 
        UNION 
          ALL
       SELECT ateam
            , 1
            , IF(hscore < ascore,1,0)
            , IF(hscore = ascore,1,0)
            , IF(hscore > ascore,1,0)
            , ascore
            , hscore
            , ascore-hscore 
            , CASE WHEN hscore < ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END
        FROM games
     ) tot
  JOIN teams t 
    ON tot.Team=t.id
 GROUP 
    BY Team
 ORDER 
    BY SUM(PTS) DESC ;

http://sqlfiddle.com/#!2/273806/1