sql使用不同的值连接相同的列

时间:2018-06-13 03:23:08

标签: mysql sql

这可能是一个简单的SQL问题但是很难......

表1 = matchInformation

homeTeamId,   awayTeamId,   等

表2 =学校:

ID,   名称,   等

我让用户选择"名称"来自"学校"表。我想显示所有matchInformation数据,其中团队是homeTeam或awayTeam。用户应该看到" school"表而不是matchInformation表中的id。 他们应该看到学校名称,homeTeam和awayTeam。

由于

4 个答案:

答案 0 :(得分:1)

虽然您已经自己回答了这个问题,但我想提供一种替代方法,两次加入学校表。

 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'

答案 1 :(得分:1)

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

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。它有什么匹配?您的学校表中需要matchFSID。希望这有帮助!

答案 2 :(得分:0)

希望这有帮助。

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>

答案 3 :(得分:0)

这是最终有用的东西。我意识到列名有点不同,但我想在最初的问题中简化它们:

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";