MYSQL каждая таблица должна иметь свою собственную ошибку псевдонима?

0

Я пытаюсь выполнить вложенный запрос select, но я все время получаю ту же ошибку, говоря, что каждая таблица должна иметь свой собственный псевдоним.

SELECT 
  Sum(SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS, 
  Sum(SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
FROM (
  SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS SumOfASSIGN_HOURS,
  SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE
  FROM (ASSIGNMENT)
  GROUP BY ASSIGNMENT.PROJ_NUM);

Я новичок в MYSQL, и я не могу понять, что я делаю неправильно.

  • 0
    Вы видели этот ответ? stackoverflow.com/questions/1888779/...
  • 0
    Я попробовал то, что советовали в этой публикации, однако я все еще получаю ту же ошибку.
Показать ещё 1 комментарий
Теги:
mysql-workbench

3 ответа

0
Лучший ответ

Проблема здесь в том, что вы создали производную таблицу (подзапрос), и ей нужно предоставить псевдоним AS aliasName или что-то еще. Просто укажите псевдоним в своем подзапросе, как показано ниже, и вы должны быть в порядке.

SELECT 
Sum(aliasName.SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS,
Sum(aliasName.SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
FROM(
SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS
SumOfASSIGN_HOURS,SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE
FROM ASSIGNMENT 
GROUP BY ASSIGNMENT.PROJ_NUM
) aliasName;

Вы можете видеть больше этого на официальной документации здесь в котором говорится, что

Подзапросы являются законными в предложении FROM FROM FROM. Фактический синтаксис:

SELECT... FROM (подзапрос) [AS] name...

Предложение [AS] name является обязательным, поскольку каждая таблица в предложении FROM должна иметь имя. Любые столбцы в списке выбора подзапроса должны иметь уникальные имена.

  • 0
    Да, этот ответ был полезен. Спасибо.
0

Вы должны добавить имя в таблицу FROM (выберите.....). Например, добавьте простой псевдоним в виде T

    SELECT 
    Sum(T.SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS, 
    Sum(T.SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
  FROM (
    SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS SumOfASSIGN_HOURS,
    SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE
    FROM (ASSIGNMENT)
    GROUP BY ASSIGNMENT.PROJ_NUM) T ;
0

Из чтения вашего запроса, похоже, вы можете пропустить дополнительный запрос. Ваш запрос должен выглядеть следующим образом:

SELECT PROJ_NUM, SUM(ASSIGN_HOURS) AS SumOfASSIGN_HOURS, 
SUM(ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE                       
FROM ASSIGNMENT
GROUP BY PROJ_NUM

Ещё вопросы

Сообщество Overcoder
Наверх
Меню