简体   繁体   中英

MySQL syntax error [Left Join]

So i've got this query below and it's giving me a syntax error. I will show the error below the query.

Please check below:

SELECT g.fullname, g.id as guardian_id, g.email, g.email_2, s.title, s.domain, d.device_id as device, d.os, gf.booking_open_notified, gf.days_notified_7, gf.days_notified_3, gf.day_notified, s.id as school_id, p.firstname, p.surname 
FROM guardian as g
LEFT JOIN guardian_form as gf ON gf.school_id = g.school_id
LEFT JOIN school as s ON s.id = g.school_id 
LEFT JOIN school_design as sd ON sd.school_id = s.id 
LEFT JOIN device as d ON d.school_id = s.id AND d.guardian_id = g.id 
    (
        LEFT JOIN pupil as p ON p.school_id = s.id AND 
        (
            p.grade_id = gf.grade_id
            OR p.grade_id = gf.grade_id_2
            OR p.grade_id = gf.grade_id_3
            OR p.grade_id = gf.grade_id_4
            OR p.grade_id = gf.grade_id_5
            OR p.grade_id = gf.grade_id_6
            OR p.grade_id = gf.grade_id_7
            OR p.grade_id = gf.grade_id_8
            OR p.grade_id = gf.grade_id_9
            OR p.grade_id = gf.grade_id_10
        )
    ) OR (
        LEFT JOIN guardian_form_group as gfg ON gfg.guardian_form_id = gf.id
        LEFT JOIN pupil_group as pg ON pg.group_id = gfg.group_id
        LEFT JOIN pupil as p ON p.id = pg.pupil_id AND pg.school_id = s.id
    )
WHERE (
    gf.booking_open_notified != 1 
    OR gf.days_notified_7 != 1 
    OR gf.days_notified_3 != 1 
    OR gf.day_notified != 1 
)
AND gf.active = 1
AND sd.disable_parents_evening_notification_and_email = 0 
GROUP BY gf.id, p.id 
LIMIT 20

Error:

Error SQL query: Documentation

 SELECT g.fullname, g.id as guardian_id, g.email, g.email_2, s.title, s.domain, d.device_id as device, d.os, gf.booking_open_notified, gf.days_notified_7, gf.days_notified_3, gf.day_notified, s.id as school_id, p.firstname, p.surname FROM guardian as g LEFT JOIN guardian_form as gf ON gf.school_id = g.school_id LEFT JOIN school as s ON s.id = g.school_id LEFT JOIN school_design as sd ON sd.school_id = s.id LEFT JOIN device as d ON d.school_id = s.id AND d.guardian_id = g.id ( LEFT JOIN pupil as p ON p.school_id = s.id AND ( p.grade_id = gf.grade_id OR p.grade_id = gf.grade_id_2 OR p.grade_id = gf.grade_id_3 OR p.grade_id = gf.grade_id_4 OR p.grade_id = gf.grade_id_5 OR p.grade_id = gf.grade_id_6 OR p.grade_id = gf.grade_id_7 OR p.grade_id = gf.grade_id_8 OR p.grade_id = gf.grade_id_9 OR p.grade_id = gf.grade_id_10 ) ) OR 

MySQL said: Documentation

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

 'JOIN pupil as p ON p.school_id = s.id AND ( p.grade_id = gf.' at line 8 

Your syntax IS LIKE

SELECT listOfColumns FROM table1 LEFT JOIN table2 (LEFT JOIN table3) OR (LEFT JOIN table4)

Why are you trying TO USE 'OR' for joining ? This is not supported. Try improving your ON conditions if you want to filter out the tables

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM