2015-02-02 6 views
0

Я пытаюсь написать SQL присоединиться, но я получаю не уникальную ошибку:MySQL внутренний заспорить псевдоним

SELECT matches.match_id, 
     teamsh.team_name AS "homeTeam", 
     teamsh.team_id AS "homeID", 
     teamsa.team_name AS "awayTeam", 
     teamsa.team_id AS "awayID", 
     competition.NAME, 
     competition.competition_id, 
     teamsh.stadium, 
     matches.date, 
     teamsh.name_short AS "homeTeamShort", 
     teamsa.name_short AS "awayTeamShort", 
     teamsh.pysioid AS "pysioIDh", 
     teamsa.pysioid AS "pysioIDa" 
FROM matches, 
     teams teamsh, 
     teams teamsa, 
     competition 

INNER JOIN 
teamsh ON matches.home_team_id = teamh.team_id, 
teamsa ON matches.away_team_id = teama.team_id, 
competition ON matches.competition_id = competition.competition_id ​ 

WHERE match_id = 22268 

1066 - не уникальный настольный/псевдоним: «teamsh».

Я знаю, что я рядом, но псевдоним избил меня.

Благодарим вас заблаговременно,

Al.

ответ

2

Вы смешивание старого стиля соединяется с правильным присоединиться к синтаксису:

SELECT matches.match_id, 
     teamsh.team_name AS "homeTeam", 
     teamsh.team_id AS "homeID", 
     teamsa.team_name AS "awayTeam", 
     teamsa.team_id AS "awayID", 
     competition.NAME, 
     competition.competition_id, 
     teamsh.stadium, 
     matches.date, 
     teamsh.name_short AS "homeTeamShort", 
     teamsa.name_short AS "awayTeamShort", 
     teamsh.pysioid AS "pysioIDh", 
     teamsa.pysioid AS "pysioIDa" 
FROM matches 
INNER JOIN 
teams AS teamsh ON matches.home_team_id = teamsh.team_id 
INNER JOIN 
teams AS teamsa ON matches.away_team_id = teamsa.team_id 
INNER JOIN 
competition ON matches.competition_id = competition.competition_id ​ 
WHERE match_id = 22268 

Вы получали ошибку, потому что teamsh и teamsa были использованы несколько раз, как имена таблиц/псевдонимы.

+0

благодарит за ответы. Теперь я получаю # 1054 - Неизвестный столбец «match.competition_id» в разделе «on». contest_id существует в таблице совпадений, поэтому сообщение об ошибке не помогает –

+0

@AlanA. Кажется странным, является ли приведенный выше полный запрос, который вы используете? Наиболее распространенной причиной этой ошибки, когда существует поле, является смешение старомодных объединений с объединениями ANSI, но мы удалили их из запроса выше, так что это любопытно. –

+0

вот точный sql, который я использую: https://gist.github.com/spacebiscuit/be0f8eb07e35b2e029e9 - Не уникальная таблица/псевдоним: 'competition' –

1

Проблема заключается в вашей статье FROM. Это должно выглядеть так:

FROM matches 
INNER JOIN 
teams teamsh ON matches.home_team_id = teamh.team_id 
INNER JOIN 
teams teamsa ON matches.away_team_id = teama.team_id 
INNER JOIN 
competition ON matches.competition_id = competition.competition_id ​ 
+0

close, но 'teamh' и' teama' не являются именами псевдонимов таблицы, в которых нужно 's'. – xQbert

+0

@ dan08 - спасибо, он дает мне неизвестный столбец «matches.competition_id» в разделе «on». –

Смежные вопросы