Ошибка одного оператора выбора "Каждая производная таблица должна иметь свой собственный псевдоним"
Я пытался заставить работать следующее утверждение select уже несколько дней, но мне не повезло. Краткая сводка кода состоит в том, что он возвращает список всех команд в базе данных и сколько побед каждая команда имеет против команд, занявших первые 10 мест. Выигрыши извлекаются из таблицы игр, в которой содержатся все сыгранные игры. Вот код, который у меня есть
SELECT IF(@last_ranking <> formula, @current_rankings := @current_rankings + 1, @current_rankings) AS rank,
@last_ranking := formula,
prequery.team,
prequery.formula
FROM (select @current_rankings := 0) sqlvars,
(SELECT team,
SUM(score) formula
FROM (SELECT g.home_team,
SUM(CASE WHEN t.team_id IS NULL THEN 0 ELSE g.home_wins END) AS formula
FROM games g LEFT JOIN
_top_10 AS t ON g.away_team = t.team_id
WHERE
g.season = 2012 AND
g.completed = 1
UNION ALL SELECT g.away_team,
SUM(CASE WHEN t2.team_id IS NULL THEN 0 ELSE g.away_wins END) AS formula
FROM games g LEFT JOIN
_top_10 AS t2 ON g.home_team = t2.team_id
WHERE
g.season = 2012 AND
g.completed = 1),
(SELECT @current_rankings := 0, @last_ranking := 0) r
GROUP BY team ORDER BY formula DESC ) prequery;
но я продолжаю получать следующую ошибку
Код ошибки: 1248. У каждой производной таблицы должен быть свой псевдоним
Может кто-нибудь увидеть, что я делаю не так здесь. Спасибо!
1 ответ
Вероятно, вы пропустите, чтобы добавить псевдоним из-за выравнивания вашего SELECT
заявления.
SELECT IF(@last_ranking <> formula, @current_rankings := @current_rankings + 1, @current_rankings) AS rank,
@last_ranking := formula,
prequery.team,
prequery.formula
FROM (select @current_rankings := 0) sqlvars,
(
SELECT team,
SUM(score) formula
FROM (
SELECT g.home_team,
SUM(CASE WHEN t.team_id IS NULL THEN 0 ELSE g.home_wins END) AS formula
FROM games g LEFT JOIN
_top_10 AS t ON g.away_team = t.team_id
WHERE g.season = 2012 AND
g.completed = 1
UNION ALL
SELECT g.away_team,
SUM(CASE WHEN t2.team_id IS NULL THEN 0 ELSE g.away_wins END) AS formula
FROM games g LEFT JOIN
_top_10 AS t2 ON g.home_team = t2.team_id
WHERE
g.season = 2012 AND
g.completed = 1
) AS AliasHere, -- <<=== HERE
(SELECT @current_rankings := 0, @last_ranking := 0) r
GROUP BY team ORDER BY formula DESC
) prequery;