我正在尝试根据 IF 条件更改 where 子句。查询由于某种原因失败。我将不胜感激任何帮助。
谢谢!
SELECT
c.id AS course,
cr.id AS criteriaid,
u.id AS userid,
ue.timestart AS otimestart,
(ue.timestart + cr.enrolperiod) AS ctimestart,
ue.timecreated AS otimeenrolled,
(ue.timecreated + cr.enrolperiod) AS ctimeenrolled
FROM
{user} u
INNER JOIN
{user_enrolments} ue
ON ue.userid = u.id
INNER JOIN
{enrol} e
ON e.id = ue.enrolid
INNER JOIN
{course} c
ON c.id = e.courseid
INNER JOIN
{course_completion_criteria} cr
ON c.id = cr.course
LEFT JOIN
{course_completion_crit_compl} cc
ON cc.criteriaid = cr.id
AND cc.userid = u.id
WHERE
cr.criteriatype = 5
AND c.enablecompletion = 1
AND cc.id IS NULL
AND
(
IF (ue.timeextension IS NULL)
(ue.timestart > 0 AND ue.timestart + cr.enrolperiod < ?
OR ue.timecreated > 0 AND ue.timecreated + cr.enrolperiod < ?)
ELSE
(ue.timestart > 0 AND ue.timestart + ue.timextension < ?
OR ue.timecreated > 0 AND ue.timecreated + ue.timeextension < ?)
)