首先,我搜索了我的问题的答案,但找不到。 我正在学习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,我会从第一个表中获取值,但是我无法从第二个获得值。如果那不可能,那么我无法解决这个问题。
提前感谢您提供的任何帮助。
答案 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 ;