我在足球应用程序中尝试应用有关直接比赛的规则时遇到问题。我读过这篇tread文章,它非常有助于根据分数标准、差异和进球来创建站立位置表。
但我想知道是否可以通过直接比赛来确定球队的位置:
看这个位置表:
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
正如你可能看到的,国际米兰和皇家马德里的积分是并列的,而国际米兰之所以领先皇家马德里,是因为他们的进球不同。我想得到的结果是:
Pos Team Pld W D L F A GD Pts
1 FC Barcelona 5 2 3 0 8 5 3 9
2 **Real Madrid** 6 2 2 2 8 8 0 8
3 *Inter Milan* 6 2 2 2 11 10 1 8
4 AC Milan 5 0 3 2 8 12 -4 3
注意,这次皇马领先于国际米兰,因为它赢得了他们之间的两场直接比赛。
我有一张桌子是给团队的,其他的是给结果的。
如果可能的话,我想使用mysql中的查询来实现这一点。或者,如果我在服务器端(php)进行这种排序,可能会更好。
谢谢你的帮助。
最佳答案
要在一个查询中高效地执行所请求的操作是不可能的,该查询将返回所请求的结果,并使用该条件对点中的关系进行排序。
原因很简单:假设您可以在查询中获得一个列,该列将提供或帮助您进行所需的排序。也就是说,它会命令得分相同的球队,一方比另一方赢得更多的胜利(因为这很可能发生在2支以上的球队)。要手工计算,您需要一个双条目表,其中显示了这些团队之间赢得的比赛数量,如下所示:
| TeamA | TeamB | TeamC
------------------------------
TeamA | 0 | XAB | XAC
TeamB | XBA | 0 | XBC
TeamC | XCA | XCB | 0
因此,您只需将每一列的行相加,然后按降序排序即可提供所需的数据。
问题是,在实际获得数据之前,你不知道哪些团队是并列的。因此,为一般情况创建该列将意味着您需要针对每个团队创建每个团队的整个表(这不是一个小任务);然后您需要将逻辑添加到查询中,以便仅针对在点上与其关联的团队的列进行添加…您需要原始结果集(无论如何,您应该使用相同的查询创建)。
在一个查询中获得这些信息是可能的,但是对于数据库来说,这肯定是太重了。你最好在获得你所需要的数据后在代码中添加逻辑(获得Teama对Teamb或Teamc赢得的游戏数量并不太复杂)。你仍然需要注意如何建立查询和运行查询的数量;毕竟,在联赛的前几场比赛中,你会有很多球队相互联系,因此获取数据将与建立我用作exa的整个双条目表一样有效。所有团队对所有团队的前一个例子。
关于php - 通过直接比赛订购排名足球[足球]位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10693446/