这可能是一个简单的SQL问题但是很难......
表1 = matchInformation
homeTeamId, awayTeamId, 等
表2 =学校:
ID, 名称, 等
我让用户选择"名称"来自"学校"表。我想显示所有matchInformation数据,其中团队是homeTeam或awayTeam。用户应该看到" school"表而不是matchInformation表中的id。 他们应该看到学校名称,homeTeam和awayTeam。
由于
答案 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";