SQL查询 - 如何组合不同的搜索查询

时间:2012-02-22 16:03:56

标签: mysql sql

我有一个关于通过PHPmyadmin在MySql中查询的问题。我有一个包含几个表的数据库。其中一个表包含体育比赛的比赛信息。这个“游戏”表格中有“gameid”,“pouleid”,“hometeamnumber”,“awayteamnumber”,“gamedate”等列。

然后我有另一个表“Team”,其中存储了teamdata。这个表只有三列:“teamnumber”,“clubname”,“teamname”。

现在我想在这个数据库上进行sql查询。结果我想显示“gameid”,“homeclubname”,“hometeamname”,“awayclubname”,“awayteamname”和“gamedate”。要获得homeclubname和hometeamname,我需要从Game表中获取“hometeamnumber”并将其与“Team”表中的“teamnumber”进行比较。对于客场名称和客队名称也是如此。

但我只能在我的查询中设法只获得家庭俱乐部/团队或离家俱乐部/团队。因此,我使用以下SQL语句:

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

但这只会给我一个家庭主妇和家庭主妇。理想我也想要客场名和客队名。但要获得这些信息,我必须在表格中查看。以下查询显然不起作用。

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

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

2 个答案:

答案 0 :(得分:0)

以下内容将获取特定游戏中两个团队的团队数据

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

根据您制作的内容,可以进行各种更改,上述内容适用于显示单个游戏的信息。如果试图显示一个大的结果表,可以使用其他方法,所以如果您需要更多信息,请澄清问题。

答案 1 :(得分: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

您应该能够针对您的特定需求进行编辑/改进。