0

I am trying to do a nested select query but I keep getting the same error saying that every table must have its own alias.

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);

I am new to MYSQL and I cant figure out what I am doing wrong.

Sphinx
  • 10,519
  • 2
  • 27
  • 45
naauao
  • 3
  • 2

3 Answers3

0

The problem here is that you have created a derived table (sub-query) and it must be given alias AS aliasName or anything. Just provide an alias on your sub-query as below and you should be fine.

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;

You can see more of this on the official documentation here which states that

Subqueries are legal in a SELECT statement's FROM clause. The actual syntax is:

SELECT ... FROM (subquery) [AS] name ...

The [AS] name clause is mandatory, because every table in a FROM clause must have a name. Any columns in the subquery select list must have unique names.

Community
  • 1
  • 1
stackFan
  • 1,528
  • 15
  • 22
0

From reading your query, it looks like you can skip the sub query. Your query should look like below:

SELECT PROJ_NUM, SUM(ASSIGN_HOURS) AS SumOfASSIGN_HOURS, 
SUM(ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE                       
FROM ASSIGNMENT
GROUP BY PROJ_NUM
isaace
  • 3,336
  • 1
  • 9
  • 22
0

You must add a name at the FROM ( select ..... ) Table eg add a simple alias as 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 ;
ScaisEdge
  • 131,976
  • 10
  • 91
  • 107