Search code examples
mysqlleft-joinaliases

Left Join table error missing aliases


I wrote a query in mysql to get all records from job_input table and corresponding output records if avaible from job_output table. It gives the following error:

Query: select ji.* from job_input as ji left join (select SUM(jo.O_Total) AS Total_Output, SUM(jo.O_XS) AS XS_Output, SUM(jo.O_S) AS ...

Error Code: 1248 Every derived table must have its own alias

Below is my query. What am I doing wrong??

SELECT ji.* 
    FROM `job_input` AS ji LEFT JOIN
    (SELECT 
    SUM(jo.O_Total) AS Total_Output,
    SUM(jo.O_XS) AS XS_Output,
    SUM(jo.O_S) AS S_Output,
    SUM(jo.O_M) AS M_Output,
    SUM(jo.O_L) AS L_Output,
    SUM(jo.O_XL) AS XL_Output,
    SUM(jo.O_XXL) AS XS_Output,
    SUM(jo.O_Other) AS Other_Output FROM `job_output` AS jo GROUP BY jo.`Job_InputID`)
    ON jo.`Job_InputID`= ji.`Job_InputID`

Solution

  • You need to put alias to join table?

    SELECT ji.* 
        FROM `job_input` AS ji LEFT JOIN
        (SELECT 
        jo.`Job_InputID` AS JobID
        SUM(jo.O_Total) AS Total_Output,
        SUM(jo.O_XS) AS XS_Output,
        SUM(jo.O_S) AS S_Output,
        SUM(jo.O_M) AS M_Output,
        SUM(jo.O_L) AS L_Output,
        SUM(jo.O_XL) AS XL_Output,
        SUM(jo.O_XXL) AS XS_Output,
        SUM(jo.O_Other) AS Other_Output FROM `job_output` AS jo GROUP BY jo.`Job_InputID`) AS table2
        ON table2.JobID = ji.`Job_InputID`