【发布时间】:2011-03-09 20:06:19
【问题描述】:
我的 mysql 数据库中有很多对多的表设置。球队可以参加多场比赛,每场比赛有2支球队。在它们之间有一个名为 teams_games 的表。
我要做的是为每个团队创建统计数据。理想的打印输出是:
team_id、team_name、胜负、平局、错误
我的问题是将哪个球队是主队或客队的数学联系起来,如果他们赢了,然后计算这些。然后,我必须将这些与每支球队离开并获胜的次数相加。然后最终将所有内容结合在一起。我当前的查询结构(不能正常工作)与创建表信息一起在下面。有什么想法吗?
SELECT t.*, COUNT(g_wins.home_score > g_wins.away_score) AS wins,
COUNT(g_wins.home_score < g_wins.away_score) AS losses
FROM teams as t
JOIN teams_games AS t_g_wins ON t_g_wins.tid = t.tid
JOIN games AS g_wins on t_g_wins.gid = g_wins.gid"
Table Create Table
teams CREATE TABLE `teams` (
`tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`league` varchar(2) NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`tid`)
)
CREATE TABLE teams_games (
`tid` int(10) unsigned NOT NULL,
`gid` int(10) unsigned NOT NULL,
`homeoraway` tinyint(1) NOT NULL,
PRIMARY KEY (`tid`,`gid`),
KEY `gid` (`gid`),
CONSTRAINT `teams_games_ibfk_1` FOREIGN KEY (`tid`) REFERENCES `teams` (`tid`),
CONSTRAINT `teams_games_ibfk_2` FOREIGN KEY (`gid`) REFERENCES `games` (`gid`)
)
CREATE TABLE games (
`gid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`location` varchar(60) NOT NULL,
`time` datetime NOT NULL,
`description` varchar(400) NOT NULL,
`error` smallint(2) NOT NULL,
`home_score` smallint(2) DEFAULT NULL,
`away_score` smallint(2) DEFAULT NULL,
PRIMARY KEY (`gid`)
)
【问题讨论】:
-
你能改变你的数据结构吗?