【发布时间】:2017-08-14 08:47:07
【问题描述】:
所以我在下面得到了这个查询,它给了我一个语法错误。我将在查询下方显示错误。
请检查以下内容:
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
错误:
错误 SQL 查询:文档
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 ) ) ORMySQL 说:文档
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 近
'JOIN pupil as p ON p.school_id = s.id AND ( p.grade_id = gf.' at line 8
【问题讨论】:
-
顺便提一下,
LEFT JOIN x WHERE x =...和INNER JOIN x是一样的 -
并且任何时候你发现自己使用了枚举列名(例如,2),你可以确定你的架构设计出现了非常非常错误的地方。
-
我觉得这是您在
LEFT之前打开的(,并且整个结构与JOIN... OR甚至可能吗?