Moodle,mysql 按课程查询用户注册状态

Moodle, mysql query users enrolment status by course

这是 moodle 中的一个查询,用于获取课程中的校友身份。 'X'表示用户已注册,为空表示未注册。 我们必须为我们拥有的每门课程添加一个子查询...... 谁能帮忙做一个更好的查询?

SELECT
    user1.firstname AS Firstname,
    user1.lastname AS Lastname,
    user1.email AS Email,
    if (exists( SELECT 
        ue.id 
        FROM mdl_user_enrolments AS ue
        JOIN mdl_enrol AS en ON en.id = ue.enrolid   
        JOIN mdl_course AS course ON course.id = en.courseid
        WHERE user1.id = ue.userid AND course.id = '1'), 'X', '') as "Enrolled Course One"
    FROM mdl_user AS user1
    LEFT JOIN mdl_user_enrolments AS ue ON ue.userid = user1.id
    LEFT JOIN mdl_enrol AS en ON en.id = ue.enrolid
    LEFT JOIN mdl_course AS course ON course.id = en.courseid
    [...]
    WHERE user1.deleted='0'

您可以尝试这样的操作,但如果您有很多用户和课程,则需要很长时间才能处理

    SELECT CONCAT(u.id, '_', c.id) AS uniqueid,
        u.id AS userid,
        u.firstname,
        u.lastname,
        u.email,
        MAX(CASE WHEN ue.id IS NULL THEN '' ELSE 'X' END) AS enrolled,
        c.id AS courseid,
        c.fullname AS coursename
    FROM mdl_user u
    CROSS JOIN mdl_course c
    LEFT JOIN mdl_enrol e ON e.courseid = c.id
    LEFT JOIN mdl_user_enrolments ue ON u.id = ue.userid AND ue.enrolid = e.id
    WHERE u.deleted = 0
    GROUP BY u.id, c.id