Mysql体育排行榜
我正在创建一个体育页面,我已经到了一个我自己无法解决的地步 我的问题是,我不知道如何在每场比赛日后将每支球队的位置分开存储。以下是我想要实现的目标: 对于创建排行榜,我有两个表: 俱乐部:id_俱乐部,名称 结果:比赛id、比赛日、主场队、awayteam、主场进球、awaygoals、日期、id_联赛 从结果表中,我创建了如下设置的排名表:Mysql体育排行榜,mysql,graph,progress,storing-data,Mysql,Graph,Progress,Storing Data,我正在创建一个体育页面,我已经到了一个我自己无法解决的地步 我的问题是,我不知道如何在每场比赛日后将每支球队的位置分开存储。以下是我想要实现的目标: 对于创建排行榜,我有两个表: 俱乐部:id_俱乐部,名称 结果:比赛id、比赛日、主场队、awayteam、主场进球、awaygoals、日期、id_联赛 从结果表中,我创建了如下设置的排名表: SELECT name AS Team, Sum(P) AS P, Sum(W) AS W, Sum(D) AS D,
SELECT
name AS Team,
Sum(P) AS P,
Sum(W) AS W,
Sum(D) AS D,
Sum(L) AS L,
SUM(F) as F,
SUM(A) AS A,
SUM(GD) AS GD,
SUM(Pts) AS Pts
FROM (
SELECT *,
hometeamid Team,
1 P,
IF(homegoal > awaygoal,1,0) W,
IF(homegoal = awaygoal,1,0) D,
IF(homegoal < awaygoal,1,0) L,
homegoal F,
awaygoal A,
homegoal-awaygoal GD,
CASE WHEN homegoal > awaygoal THEN 3
WHEN hometeam = awaygoal THEN 1
ELSE 0
END PTS
FROM results
WHERE id_league = '$leagueid'
AND homegoal IS NOT NULL
AND awaygoal IS NOT NULL
UNION ALL
SELECT *,
awayteamid,
1,
IF(homegoal < awaygoal,1,0),
IF(homegoal = awaygoal,1,0),
IF(homegoal > awaygoal,1,0),
awaygoal,
homegoal,
awaygoal-homegoal GD,
CASE WHEN homegoal < awaygoal THEN 3
WHEN homegoal = awaygoal THEN 1
ELSE 0
END
FROM results
WHERE id_league = '$leagueid'
AND awaygoal IS NOT NULL
AND homegoal IS NOT NULL
) AS tot
JOIN clubs t ON tot.Team=t.id_clubs
GROUP BY Team
ORDER BY
SUM(Pts) desc,
SUM(GD) desc
希望有人能提供一些建议或解决方案 如果您对从结果表中检索订单号有疑问,下面是一个类似的讨论,这可能正是您所需要的:
要选择前n场比赛,您可以在按比赛id分组后限制n。我的目标是在每个比赛日后获得每个队的位置。这是一个球队的例子:曼城:比赛日1:1:1比赛日2:3比赛日3:3比赛日4:7等等。我的目标是得到位置1,3,3,7,这样我就可以制作一个图,如我第一篇文章中的图片所示