2012-02-22 76 views
0

我有一个关于通过PHPmyadmin在MySql中查询的问题。我有一个包含几个表的数据库。其中一张表包含体育比赛的比赛信息。这个“游戏”表具有“gameid”,“pouleid”,“hometeamnumber”,“awayteamnumber”,“gamedate”列。SQL查询 - 如何组合不同的搜索查询

然后我有另一个表“团队”,在其中存储teamdata。此表只有三列:“队伍编号”,“俱乐部名称”,“队名”。

现在我想对这个数据库做一个sql查询。在结果中,我想显示“gameid”,“homeclubname”,“hometeamname”,“awayclubname”,“awayteamname”和“gamedate”。要获得homeclubname和hometeamname,我需要从游戏桌获取“家庭游戏编号”,并将其与“团队”表中的“团队编号”进行比较。 awayclubname和awayteamname也是一样。

但我只能设法在我的查询中获得主场/球队或者客场/球队。因此,我使用以下SQL语句:

“SELECT gameid, pouleid, hometeamnumber, clubname, teamname, awayteamnumber, gamedate 
FROM Game, Team 
WHERE Game.hometeamnumber = Team.teamnumber” 

但是,这只会给我homeclubname和hometeamname。理想我也想要离开俱乐部名称和离队名称。但要获得这些信息,我不得不看看表中的团队。以下查询显然不起作用。

“SELECT gameid, pouleid, hometeamnumber, clubname, teamname, awayteamnumber, gamedate 
FROM Game, Team 
WHERE Game.hometeamnumber = Team.teamnumber 
AND Game.awayteamnumber = Team.teamnumber” 

如何在一个SQL查询中执行此操作?

+1

将'AND'更改为'OR' – ManseUK 2012-02-22 16:05:33

+0

更改为OR将无法正常工作,因为我需要主客场球队。使用JOIN是正确的解决方案。 – 2012-02-23 11:04:33

回答

0

下会得到一个特定的游戏

SELECT 
    Team.* 
FROM Game 
INNER JOIN Team 
ON Team.teamnumber IN (Game.hometeamnumber,Game.awayteamnumber) 
WHERE Game.gameid = 123 

取决于你是生产什么有多种变化的可能进行之内两队的球队数据,上面会显示信息时是合适的关于一场比赛。如果试图显示一个大型的结果表,可以使用其他方法,所以如果您需要更多信息,请澄清问题。

0

你应该可以使用连接来返回你想要的数据。

只是目测很快提出像:

SELECT gameid, pouleid, 
hometeamnumber, #HomeTeam.clubname as HomeTeamClubName, #HomeTeam.teamname as HomeTeamName, 
awayteamnumber, #AwayTeam.clubname as AwayTeamClubName, #AwayTeam.teamname as AwayTeamName, 
gamedate 
FROM Game 
INNER JOIN Team as #HomeTeam 
on hometeamnumber = #HomeTeam.teamnumber 
INNER JOIN Team as #AwayTeam 
on awayteamnumber = #AwayTeam.teamnumber 

你应该能够编辑/改善这为您的特定需求。