mysql 90天以内_mysql – Moodle SQL查询,用于检索在过去90天内注册到课程的所有用户...

嘿家伙可以有人帮助我,我需要一个SQL查询,这将给我所有注册到过去90天未被暂停的课程的用户.

我做了一些搜索,发现了这个:

SELECT DISTINCT u.id AS userid, c.id AS courseid

FROM mdl_user u

JOIN mdl_user_enrolments ue ON ue.userid = u.id

JOIN mdl_enrol e ON e.id = ue.enrolid

JOIN mdl_role_assignments ra ON ra.userid = u.id

JOIN mdl_context ct ON ct.id = ra.contextid AND ct.contextlevel = 50

JOIN mdl_course c ON c.id = ct.instanceid AND e.courseid = c.id

JOIN mdl_role r ON r.id = ra.roleid AND r.shortname = 'student'

WHERE e.status = 0 AND u.suspended = 0 AND u.deleted = 0

AND (ue.timeend = 0 OR ue.timeend > NOW()) AND ue.status = 0

我可以通过在查询结尾添加AND courseid = 11来返回特定课程的结果,但我仍在努力处理日期范围.

我尝试过使用:

AND ue.timecreated BETWEEN NOW() - INTERVAL 90 DAY AND NOW()

但是这回来没有结果我甚至试图添加2000天范围,它什么也没有返回

这是我当前修改过的查询:

SELECT DISTINCT u.id AS userid, c.id AS courseid, DATE_FORMAT(ue.timecreated, '%m/%d/%Y')

FROM mdl_user u

JOIN mdl_user_enrolments ue ON ue.userid = u.id

JOIN mdl_enrol e ON e.id = ue.enrolid

JOIN mdl_role_assignments ra ON ra.userid = u.id

JOIN mdl_context ct ON ct.id = ra.contextid

AND ct.contextlevel =50

JOIN mdl_course c ON c.id = ct.instanceid

AND e.courseid = c.id

JOIN mdl_role r ON r.id = ra.roleid

AND r.shortname = 'student'

WHERE e.status =0

AND u.suspended =0

AND u.deleted =0

AND (

ue.timeend =0

OR ue.timeend > NOW()

)

AND ue.status =0

AND ue.timecreated BETWEEN NOW() - INTERVAL 1200 DAY AND NOW()

AND courseid = 11

并且没有返回任何内容,只要我删除包含日期范围的倒数第二行,我就会收到课程内容11中的所有结果.

基本上我需要:

在过去90天内未注册或删除的特定课程中注册的所有用户的列表.

结果将是这样的:

课程编号:20

用户ID:200,533,221,22,356

干杯,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值