如何从足球[足球]结果的mysql表中动态输出积分表?

Aas*_*zam 13 php mysql sql-order-by

我一直试图找到关于这个主题的东西,我似乎找不到任何东西,这里有几个问题,但它们对我的特定项目不起作用.

我问了一个关于更新表的类似问题,但它不能用于我真正想要的是结果列表.

 --------------------------------------------------------
|id  |   hometeam   |goalsfor|goalsagainst|   awayteam   |
 --------------------------------------------------------
| 1  |Inter Milan   |   3    |     1      | FC Barcelona |
 --------------------------------------------------------
| 2  |FC Barcelona  |   1    |     0      | Inter Milan  |
 --------------------------------------------------------
| 3  |Inter Milan   |   4    |     0      | AC Milan     |
 --------------------------------------------------------
| 4  |AC Milan      |   0    |     2      | Inter Milan  |
 --------------------------------------------------------
| 5  |Real Madrid   |   2    |     0      | AC Milan     |
 --------------------------------------------------------
| 6  |AC Milan      |   2    |     2      | Real Madrid  |
 --------------------------------------------------------
| 7  |FC Barcelona  |   2    |     2      | AC Milan     |
 --------------------------------------------------------
| 8  |Real Madrid   |   2    |     0      | Inter Milan  |
 --------------------------------------------------------
| 9  |Inter Milan   |   3    |     1      | Real Madrid  |
 --------------------------------------------------------
| 10 |FC Barcelona  |   2    |     0      | Real Madrid  |
 --------------------------------------------------------
| 11 |Real Madrid   |   1    |     1      | FC Barcelona |
 --------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够按顺序创建一个排名表的排名表,我想动态呈现这个表而不是把它放到数据库中

Pos Team           Pld  W   D   L   F   A   GD  Pts
1   FC Barcelona    5   2   3   0   8   5   3   9
2   Inter Milan     6   2   2   2   11  10  1   8
3   Real Madrid     6   2   2   2   8   8   0   8
4   AC Milan        5   0   3   2   8   12  -4  3
Run Code Online (Sandbox Code Playgroud)

POS =位置W =赢得D =平局L =损失F =目标得分A =目标得分与GD =目标差异Pts =点数

我认为最有效的方法是分配胜利,平局和失利,将得分和进球数进行总结,并在回显数据时计算 - 计算比赛总数和得分.

但是我如何分配胜利或亏损呢?并计算得分和进球的目标?

a'r*_*a'r 17

首先将得分表联合在一起,将家庭主队与客队交换,然后交换目标数.这为您提供了一些易于聚合的源数据,并且生成记分卡的查询是这样的:

select 
    team, 
    count(*) played, 
    count(case when goalsfor > goalsagainst then 1 end) wins, 
    count(case when goalsagainst> goalsfor then 1 end) lost, 
    count(case when goalsfor = goalsagainst then 1 end) draws, 
    sum(goalsfor) goalsfor, 
    sum(goalsagainst) goalsagainst, 
    sum(goalsfor) - sum(goalsagainst) goal_diff,
    sum(
          case when goalsfor > goalsagainst then 3 else 0 end 
        + case when goalsfor = goalsagainst then 1 else 0 end
    ) score 
from (
    select hometeam team, goalsfor, goalsagainst from scores 
  union all
    select awayteam, goalsagainst, goalsfor from scores
) a 
group by team
order by score desc, goal_diff desc;
Run Code Online (Sandbox Code Playgroud)

  • 好又优雅:) (2认同)