【发布时间】:2017-05-08 04:12:45
【问题描述】:
我正在尝试计算两支球队互相比赛时的头对头数据。 Team1 可以在整个赛季中多次与 Team2 交手。每次有头对头比赛(比赛)时,我都会在头对头表中记录结果。下面是我保存数据的表模式:
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'match up id',
`team1_id` int(11) DEFAULT NULL COMMENT 'id of team1',
`team2_id` int(11) DEFAULT NULL COMMENT 'id of team2',
`winner` int(11) DEFAULT NULL COMMENT 'winner(team ID) of this head to head',
`dateplayed` date DEFAULT NULL COMMENT 'date played',
`tournament_id` int(11) DEFAULT NULL COMMENT 'tournament name',
我的目标是能够计算出 team1(team1_id) 对 team2(team2_id) 的胜利次数。 我现在使用的查询是:
SELECT count(winner)as wins, te.id FROM head_to_head hh
LEFT JOIN teams te ON
hh.winner = te.id
WHERE hh.team1_id ='225' AND
hh.team2_id ='4'
group by te.id
order by count(winner)
如果我使用上面的查询,我只会得到 hh.team2_id('4') 的“胜利”。如果他们在赛季中每 5 次交手,我希望能够计算出 team1 赢了 'x' 次和 team2 赢了 'x' 次。所以最终结果应该是这样的: --假设他们在赛季中交手 5 次。
[team_id] [Wins]
225 3
4 2
非常感谢任何帮助。 谢谢。
【问题讨论】:
-
那么,你需要
select winner, count(*) from head_to_head group by winner;? -
谢谢 Gurwinder。这似乎工作正常。我需要一点补充。其中一个团队没有任何胜利,我如何将计数以及与之关联的 teamID 设置为零。谢谢。
-
我知道这不是你的问题,但我之前已经建立过这样的表格,我建议让这个长期变得更容易,将竞争对手规范化到一个单独的表格中。您的父表有比赛信息,参与者表有比赛和球队的外键,您有一个指示输赢的列,如果它是一个因素,您可以有一个主/客列,以及其他参与者特定的列你想要的数据。我发现以这种方式编写查询要容易得多