SQL - обновить таблицу из другой таблицы - синтаксическая ошибка - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть две таблицы SQL:

matches (columns are hometeam, awayteam, id, gameweek)
teams (columns are teamcode, teamname)

matches.hometeam и matches.awayteam состоят из целых чисел, соответствующих целым числам в teams.teamcode.Я пытаюсь получить matches.hometeam и matches.awayteam для обновления до строк, которые взяты из соответствующих строк в teams.teamname.Если это невозможно, мне нужно создать новую таблицу, как описано.

Я пробовал приведенный ниже код, но он выдает синтаксическую ошибку в предпоследних двух строках (ошибка 1064 (42000)).Я не могу понять, почему.

UPDATE matches
SET matches.hometeam = teams.teamname
FROM matches
INNER JOIN teams
ON (matches.hometeam = teams.teamcode);

1 Ответ

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

Ошибка 1064 - ошибка MySQL.Если вы используете MySQL, правильный синтаксис:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeam = t.teamname;

Однако это не будет работать.Что вам нужно сделать, это добавить идентификаторы:

alter table matches add hometeamcode int;

И затем сделать:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeamcode = t.teamname;

РЕДАКТИРОВАТЬ:

Я думаю, что я неправильно понял всю ситуацию.Ваша модель данных полностью верна.Таблица matches должна содержать целочисленные коды, ссылающиеся на строки в teams.

Вам просто нужно написать свой запрос, чтобы получить имена:

select m.*, th.teamname as hometeamname, ta.teamname as awayteamname
from matches m join
     team th
     on m.hometeam = th.teamcode join
     team ta
     on a.hometeam = ta.teamcode;

Если вы нене хочу делать join, затем инкапсулировать логику в представлении.

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