sql以不同的值连接同一列

xkftehaa  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(223)

这可能是一个简单的sql问题,但正在努力。。。
表1=匹配信息
hometeamid、awayteamid等
表2=学校:
身份证、姓名等
我让一个用户从“school”表中选择一个“name”。我想显示所有匹配信息数据,其中团队是主队或awayteam。用户应该看到“school”表中的名称,而不是matchinformation表中的id。他们应该看到学校的名字,主队和awayteam。
谢谢

zvokhttg

zvokhttg1#

虽然你自己已经回答了这个问题,但我想提供另一种方法,加入学校的table两次。

Select hteam.name as hometeamname,
            ateam.name as awayteamname,
            mi.homeTeam,
            mi.awayTeam
 From matchInformation mi 
 Inner Join school hteam
         On hteam.ncaaId = mi.homeTeam
 Inner Join school ateam
         On ateam.ncaaId = mi.awayTeam
 Where hteam.name = 'FOO' Or ateam.name='FOO'
fcipmucu

fcipmucu2#

这是一些最终有效的方法。我意识到列名有点不同,但我想在我的第一个问题中简化它们:

SELECT 
     (Select name 
        From school 
       Where mi.homeTeam=ncaaId) 
          As "Home Team",
    (Select name 
       From school 
      Where mi.awayTeam=ncaaId) 
         As "Away Team",
             mi.homeTeam, mi.awayTeam 
       From matchInformation 
         As mi 
 Inner Join school 
         As s
         On (s.ncaaId = mi.homeTeam OR s.ncaaId = mi.awayTeam)
      Where s.name = "FOO";
zi8p0yeb

zi8p0yeb3#

希望这有帮助。

SELECT school.name,mi.homeTeamId,mi.awayTeamId
FROM matchinformation mi
INNER JOIN  school on school.id = mi.homeTeamId or school.id= mi.awayTeamId
 where <condition>
vlurs2pr

vlurs2pr4#

我不完全确定我是否误解了你的数据库结构,但这就是它应该是什么样子。

SELECT  SC.schoolName, MA.homeTeamName, MA.awayTeamName
FROM    matchInformation MA

INNER JOIN
school SC ON SC.id = MA.schoolFSID

WHERE
MA.matchId = SC.matchFSID

你需要能够用一个唯一的id来识别比赛和学校。这就是为什么我这么长时间都在想这个问题。你想知道那些球队的名字,尽管你真的不知道他们的来龙去脉。这是哪所学校?你必须有一个 schoolFSID 在你的 matchInformation table。什么匹配?你需要有一个 matchFSID 在你学校的table上。希望这有帮助!

相关问题