【问题标题】:MYSQL query to display away team name and home team nameMYSQL查询显示客队名称和主队名称
【发布时间】:2019-03-20 14:41:15
【问题描述】:

我有两张桌子。
游戏包括 Date、hteam、ateam、hscore、acore。
团队包括 id、tname。

这个查询:

SELECT
    games.DATE,
    teams.tname AS "Away",
    games.ascore AS "A Score",
    games.hteam AS "Home",
    games.hscore AS "H Score"
FROM
    games
INNER JOIN teams ON games.ateam = teams.id
LEFT OUTER JOIN teams AS t
ON
    games.hteam = t.tname
ORDER BY
    games.DATE ASC

最终产生这个输出:

DATE Ascending 1        Away        A Score Home    H Score     
2008-01-01 20:00:00     Saxons      2       3       0
2008-01-01 20:00:00     Spurs       0       1       1
2008-01-08 20:00:00     Saxons      1       2       2
2008-01-08 20:00:00     Celtics     1       1       1

我的问题是如何让主队显示为它的名称,而不是它的 id,所以输出是:

DATE Ascending 1        Away        A Score Home        H Score     
2008-01-01 20:00:00     Saxons      2       Celtics     0
2008-01-01 20:00:00     Spurs       0       Wanderers   1
2008-01-08 20:00:00     Saxons      1       Spurs       2
2008-01-08 20:00:00     Celtics     1       Wanderers   1

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您需要再次加入“团队”表才能获得结果。 所以类似于:

    SELECT
        games.DATE,
        teams_away.tname AS "Away",
        games.ascore AS "A Score",
        teams_home.tname AS "Home",
        games.hscore AS "H Score"
    FROM
        games
    INNER JOIN teams teams_away ON games.ateam = teams_away.id
    INNER JOIN teams teams_home ON games.hteam = teams_home.id
    ORDER BY
        games.DATE ASC
    

    【讨论】:

      【解决方案2】:

      这是一种使用子查询编写查询的方法,它避免了连接:

      SELECT
          games.DATE,
          (SELECT tname FROM teams WHERE teams.id = games.hteam) AS "Away",
          games.ascore AS "A Score",
          (SELECT tname FROM teams WHERE teams.id = games.ateam) AS "Home",
          games.hscore AS "H Score"
      FROM
          games
      ORDER BY
          games.DATE ASC
      

      【讨论】:

      • 这个解决方案对我来说读起来更好,但运行速度比上面的建议稍慢。
      猜你喜欢
      • 2018-06-05
      • 1970-01-01
      • 2013-07-05
      • 2021-06-20
      • 1970-01-01
      • 2022-08-19
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多