Moodle SQL查询以获取已完成和未完成的已注册用户列表的报告

我正在使用临时报告来获取报告,我想生成完成报告。所有已注册用户的完成状态的报告。

我尝试了以下查询,但它仅给出了已完成用户的列表。它并未显示该群组中尚未完成注册的用户。请帮我解决一下这个。我想生成一个包含已注册用户(已完成和未完成)的报告。

SELECT u.username,u.firstname,u.lastname,u.email,DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%Y-%m-%d') AS 
completed,p.timecompleted
FROM prefix_course_completions AS p
JOIN prefix_course AS c ON p.course = c.id
JOIN prefix_user AS u ON p.userid = u.id
INNER JOIN prefix_cohort_members AS co ON co.cohortid=u.id
WHERE c.id=361 AND co.cohortid=142
ORDER BY u.username
arkam0803 回答:Moodle SQL查询以获取已完成和未完成的已注册用户列表的报告

我相信我至少发现了您问题的一部分。

在查询中,您进行INNER JOIN prefix_cohort_members AS co ON co.cohortid=u.id。这是将同类群组ID与用户ID结合在一起,而不是将用户ID与用户ID结合在一起。我相信正确的行是INNER JOIN prefix_cohort_members AS co ON co.userid=u.id

还要在查询中同时执行DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%Y-%m-%d') AS completedp.timecompleted,这两个操作都将返回完成时间。我不确定这是否是您想要的,但是如果您想显示注册日期,则会为您添加日期

DATE_FORMAT(FROM_UNIXTIME(p.timeenrolled),'%Y-%m-%d') AS enrolled

通过这两个更改,我能够生成一个报告,其中包含一个包含bool的行,该行显示用户是否已完成该课程,而未使用此代码块:

CASE 
when p.timecompleted is null THEN 'False'
ELSE 'True'
END AS completed

注意:我也没有使用内部联接,而是选择仅使用JOIN。我不确定这是否有所作为,但是如果上述更改对您不起作用,请将内部联接更改为JOIN可能会有所帮助。

本文链接:https://www.f2er.com/3125322.html

大家都在问