SQL присоединяется к одному столбцу с разными значениями - PullRequest
0 голосов
/ 13 июня 2018

Это, вероятно, простой вопрос sql, но он был проблематичным ...

Таблица 1 = matchInformation

homeTeamId, awayTeamId и т. Д.

Таблица 2 = школа:

идентификатор, имя и т. Д.

У меня есть пользователь, выбирающий "имя" из таблицы "школа".Я хотел бы показать все данные matchInformation, где команда является либо homeTeam, либо awayTeam.Пользователь должен видеть имена из таблицы "school", а не идентификаторы из таблицы matchInformation. Они должны увидеть названия школ, homeTeam и awayTeam.

Спасибо

Ответы [ 4 ]

0 голосов
/ 13 июня 2018

Я не совсем уверен, правильно ли я понял вашу структуру БД, но именно так она должна выглядеть.

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

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

WHERE
MA.matchId = SC.matchFSID

Вы должны быть в состоянии идентифицировать матч и школу с уникальнымЯ БЫ.Это то, что заставило меня так долго думать об этом.Вы пытаетесь получить названия этих команд, даже если вы действительно не знаете контекста.Какая это школа?Вы должны иметь schoolFSID в вашей таблице matchInformation.Какой это матч?Вы должны иметь matchFSID в вашем школьном столе.Надеюсь, это поможет!

0 голосов
/ 13 июня 2018

Вот то, что сработало в конце.Я понимаю, что имена столбцов немного отличаются, но я хотел упростить их в своем первоначальном вопросе:

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";
0 голосов
/ 13 июня 2018

Хотя вы уже ответили на этот вопрос самостоятельно, я хочу предложить альтернативный метод - присоединиться к школьному столу дважды.

 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'
0 голосов
/ 13 июня 2018

Надеюсь, это поможет.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...