Search code examples
sqlunion-all

Using UNION ALL in SQL


I added the two UNION ALL statements to get the complete data because it is in three different tables with the same column names and data types. I am getting the ORA-00907: missing right parenthesis error which i've researched and still can't figure it out.

SELECT
PE.STUDENTID,
SDA.ATT_DATE,
SCH.NAME,
PE.GRADE_LEVEL,
SR.DESCRIPTION,
S.GENDER,
SDA.ATT_CODE

FROM 
PS.PS_ENROLLMENT PE
    JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
    JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER 
    JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
UNION ALL
    (SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
UNION ALL
    (SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
))) SDA ON PE.STUDENTID = SDA.STUDENTID

WHERE 
PE.ENTRYDATE BETWEEN TO_DATE( '08/1/2011', 'mm/dd/yyyy' ) 
AND TO_DATE( '07/31/2012', 'mm/dd/yyyy' )
AND PE.EXITDATE > PE.ENTRYDATE 
AND SDA.ATT_CODE IN ( 'A', 'I', 'E', 'U', 'M', 'K' ) 
AND SDA.PRESENCE_STATUS_CD = 'Absent' 
AND PE.SCHOOLID BETWEEN ### AND ### AND PE.SCHOOLID NOT IN ( ###, ### ) 
AND PE.GRADE_LEVEL BETWEEN 0 AND 6 

ORDER BY
    SDA.ATT_DATE

Solution

  • You are missing JOIN clause

    FROM 
    PS.PS_ENROLLMENT PE
        JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
        JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER 
        JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
    
    JOIN   -- missing
    
    ((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
    UNION ALL
        (SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
    UNION ALL
        (SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
    ))) SDA ON PE.STUDENTID = SDA.STUDENTID