【问题标题】:SQL-query - how to combine different search queriesSQL-query - 如何组合不同的搜索查询
【发布时间】:2012-02-22 16:03:55
【问题描述】:

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

然后我有另一个表“团队”,其中存储了团队数据。该表只有三列:“teamnumber”、“clubname”、“teamname”。

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

但我只能设法在我的查询中获得 homeclub/team 或 awayclub/team。因此我使用以下 SQL 语句:

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

但这只会给我 homeclubname 和 hometeamname。理想我还想要 awayclubname 和 awayteamname。但要获得这些信息,我必须查看表 Team。下面的查询显然是行不通的。

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

如何在一个 sql 查询中做到这一点?

【问题讨论】:

  • 将 AND 更改为 OR 不起作用,因为我需要主队和客队。使用 JOIN 是正确的解决方案。

标签: mysql sql


【解决方案1】:

以下将获取特定比赛中两支球队的球队数据

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

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

【讨论】:

    【解决方案2】:

    您应该能够使用连接来返回您想要的数据。

    只是快速观察它会暗示类似的东西:

    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多