【发布时间】:2010-06-23 17:37:01
【问题描述】:
我的 mysql 数据库中有一个多对多的表设置。团队可以参加多场比赛,每场比赛有 2 支球队。在它们之间有一个名为 teams_games 的表。显示 CREATE TABLE 信息如下。
我一直在搞乱这个查询。在这一点上,我不在乎它是否需要子查询、连接或联合。我已经尝试了所有这些,但没有一个令人满意,我想我错过了一些东西。我一直存在的断开连接是从每场比赛中找到两个团队 id,然后使用 tid 来获取团队信息。
我想做的是,如果给定一个游戏 id (gid),我可以查询找到:
home_team_name, home_team_id, away_team_name, away_team_id, team_league(客队和主场是同一个联赛),所有比赛表信息
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`)
)
【问题讨论】:
-
尝试了不同的子查询和连接。从网上拼凑代码并猜测我的方式,但没有成功。我的问题已经很长了,所以我不想用更多的东西来填满它。