MYSQL 连接表创建新列

时间:2021-06-20 08:50:50

标签: mysql join

我正在尝试连接表;第一个是包含使用缩写名称进行比赛的球队的固定装置,第二个表格包含所有球队的详细信息,例如全名和主场。

我想加入这些表格并显示 2 x 球队的全名和主队的场地。

我下面的代码显示了我需要的一切,除了我需要显示的客队全名。

SELECT f.mid
     , f.gid
     , f.hteam
     , f.ateam
     , p.venue
     , p.fname as hteam
     , p.fname as ateam
  FROM fixtures f
  JOIN teams p 
    ON p.abbrev = f.hteam
WHERE mid = 1       

表 1(夹具)

mid gid  hteam ateam
1    1   WCE   LIV
1    2   MUN   ESS
        

表 2(团队)

fname       abbrev  venue
WEST COAST   WCE    OPTUS
LIVERPOOL    LIV    ANFIELD
MANCHESTER   MUN    OLD TRAFFORD
ESSENDON     ESS    WINDY HILL

3 个答案:

答案 0 :(得分:1)

您必须将 fixtures 加入 teams 的 2 个副本:

SELECT f.mid, f.gid, f.hteam, f.ateam, 
       t1.venue, t1.fname hteam, t2.fname ateam
FROM fixtures f
JOIN teams t1 ON t1.abbrev = f.hteam
JOIN teams t2 ON t2.abbrev = f.ateam
WHERE f.mid = 1

答案 1 :(得分:1)

您应该向 teams 添加一个加入,因为您需要两个团队的信息:

SELECT 
   f.mid, 
   f.gid, 
   f.hteam, 
   f.ateam, 
   p.venue, 
   p.fname as hteam,
   a.fname as ateam
FROM fixtures f
JOIN teams p ON p.abbrev = f.hteam
JOIN teams a On a.abbrev = f.ateam
WHERE mid = 1 

答案 2 :(得分:-1)

您可以使用 SELECT 语句中的子查询获取客队的全名

SELECT f.mid, f.gid, f.hteam, f.ateam, p.venue, p.fname as hteam,
       (SELECT fname FROM teams WHERE abbrev = f.ateam) as ateam
FROM fixtures f
JOIN teams p ON p.abbrev = f.hteam
WHERE mid = 1 

Working Fiddle

相关问题