SQL Left Join возвращает значение NULL - PullRequest
0 голосов
/ 30 августа 2018

У меня есть база данных с таблицами schedule и таблицей teams (как видно на рисунке ниже). Я пытаюсь использовать homeID & awayID внутри таблицы schedule для объединения. в таблице teams .... Проблема в том, что возвращается NULL

Макет БД

enter image description here

Schedule Таблица макетов

enter image description here

teams макет таблицы

enter image description here

Мой запрос

SELECT s.*,
  t1.teamId as homeId_teamId,
  t1.teamCode as homeId_teamCode,
  t1.teamName as homeId_teamName,
  t2.teamId as visitorId_teamId,
  t2.teamCode as visitorId_teamCode,
  t2.teamName as visitorId_teamName
FROM schedule s
  LEFT JOIN teams t1 ON s.homeId = t1.teamName
  LEFT JOIN teams t2 ON s.visitorId = t2.teamName
WHERE  gameID = '1';

Возвращенный результат

enter image description here

Есть идеи, почему я получаю значение NULL для объединения? Что мне здесь не хватает? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 30 августа 2018

id s следует объединить с id s (не именами):

SELECT s.*,
      t1.teamId as homeId_teamId,
      t1.teamCode as homeId_teamCode,
      t1.teamName as homeId_teamName,
      t2.teamId as visitorId_teamId,
      t2.teamCode as visitorId_teamCode,
      t2.teamName as visitorId_teamName
FROM schedule s LEFT JOIN
     teams t1
     ON s.homeId = t1.teamId LEFT JOIN
     teams t2
     ON s.visitorId = t2.teamId
WHERE s.gameID = 1;

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

Я отмечаю, что типы homeId и visitorId не соответствуют teams.teamId, но присвоение имен предполагает, что это правильное условие. Если внешние ключи были правильно определены, то типы должны совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...