代码之家  ›  专栏  ›  技术社区  ›  spyk

对同一表中有两列具有外部ID的表的SQL查询

sql
  •  0
  • spyk  · 技术社区  · 14 年前

    我有一个表格,我们可以这样说:match(id,hometeam,awayteam)和team(id,name)。如何构建我的sql查询,以便以(match_id,hometeam_name,awayteam_name)的形式获取结果表,因为它们(hometeam_id,awayteam_id)都引用同一个表(team)?

    谢谢你

    4 回复  |  直到 14 年前
        1
  •  1
  •   Eric Petroelje    14 年前

    您只需多次加入团队表:

    SELECT m.id, away.name, home.name
    FROM match m
    INNER JOIN team away ON away.id = m.awayteam_id
    INNER JOIN team home ON home.id = m.hometeam_id
    
        2
  •  0
  •   HLGEM    14 年前

    你参加了两次小组赛。

    select matchdate, t1.teamname, t2,teamname from 
    match m 
    join team t1 on m.hometeamId = t1.teamid
    join team t2 on m.awayteamid = t2.teamid
    
        3
  •  0
  •   Paul Smith    14 年前

    加入到 team 表两次,主队一次,客队一次,在查询表名后使用别名:

    select m.match_id, homeTeam.name as HomeTeamName, awayTeam.name as AwayTeamName
    from 
    team homeTeam join
    match m on m.hometeam_id = homeTeam.hometeam_id join
    team awayTeam on awayTeam.hometeam_id = m.awayteam_id
    
        4
  •  0
  •   Larry Lustig    14 年前
    select m.id, h.name as hometeam_name, a.name as awayteam_name
    from match m left join team h on m.hometeam_id = h.id
    left join team a on m.awayteam_id = a.id