MySQL несколько JOINS в одной ячейке - PullRequest
0 голосов
/ 23 февраля 2019

Я довольно новичок в SQL.Я часами гуглял и застрял с этой проблемой:

У меня есть таблица games со следующими ключами:

gameID, homeTeamID, awayTeamID

И таблица teams со следующимиключи:

teamID, teamName, teamTLC

Теперь я хочу запросить игру вместе с названиями команд и командными командами.Я предполагаю, что запрос может выглядеть примерно так:

SELECT games.id, teams.name
  FROM games
  WHERE games.homeTeamID = 34 OR games.awayTeamID = 34
    INNER JOIN teams AS homeTeam
      ON leagueGame.homeTeamID = homeTeam.teamID
    INNER JOIN teams AS awayTeam
      ON leagueGame.awayTeamID = awayTeam.teamID

Но я почти уверен, что этот код совершенно неверный.Цени любую помощь.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы не так далеко ...:

  • предложение WHERE следует после FROM ... JOIN part
  • , когда вы запрашиваете игру, вы хотите фильтровать по gameID, а не по командам
  • у вас нет псевдонима таблицы с именем teams;вам нужно использовать псевдонимы таблиц, которые вы определили в JOIN s.

Попробуйте:

SELECT games.id, homeTeam.name AS homeTeamName, awayTeam.name AS awayTeamName
FROM games
INNER JOIN teams AS homeTeam
      ON leagueGame.homeTeamID = homeTeam.teamID
INNER JOIN teams AS awayTeam
      ON leagueGame.awayTeamID = awayTeam.teamID
WHERE games.gameID = ?

Примечание: если вам нужно также teamTLC, вы можетеполучить к нему доступ, используя псевдонимы таблиц awayTeam и homeTeam.

0 голосов
/ 23 февраля 2019

вам нужно изменить порядок.сначала вам нужно собрать все свои данные, а затем свои критерии.

SELECT
  games.id,
  teams.name
FROM
  games
INNER JOIN teams as homeTeam ON leagueGame.homeTeamID = homeTeam.teamID
INNER JOIN teams as awayTeam ON leagueGame.awayTeamID = awayTeam.teamID
WHERE
  games.homeTeamID = 34
  OR games.awayTeamID = 34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...