Mysql 查询学生';穆德尔的分数和等级
我试图通过查询得到一个学生的分数和等级,但我无法计算出加入。这是一个非常复杂的数据库。以前有人做过吗 下面的查询(我自己修改的表)适用于某些学生,但不适用于其他学生,因此我需要一个具有原始表结构的适当查询 谢谢 我的错误查询Mysql 查询学生';穆德尔的分数和等级,mysql,moodle,Mysql,Moodle,我试图通过查询得到一个学生的分数和等级,但我无法计算出加入。这是一个非常复杂的数据库。以前有人做过吗 下面的查询(我自己修改的表)适用于某些学生,但不适用于其他学生,因此我需要一个具有原始表结构的适当查询 谢谢 我的错误查询 SELECT mdl_grade_items.id AS ItemID, mdl_course.shortname AS CourseShortname, mdl_grade_items.itemname AS ItemName,
SELECT mdl_grade_items.id AS ItemID,
mdl_course.shortname AS CourseShortname,
mdl_grade_items.itemname AS ItemName,
mdl_grade_items.grademax AS ItemGradeMax,
mdl_grade_items.aggregationcoef AS ItemAggregation,
mdl_grade_grades.finalgrade AS FinalGrade,
mdl_user.username AS StudentID,
mdl_user.id
FROM mdl_grade_items
INNER JOIN mdl_grade_grades
ON mdl_grade_items.id = mdl_grade_grades.itemid
INNER JOIN mdl_role_assignments
ON mdl_grade_grades.userid = mdl_role_assignments.userid
AND mdl_grade_items.courseid = mdl_role_assignments.mdlcourseid
INNER JOIN mdl_course
ON mdl_course.id = mdl_grade_items.courseid
INNER JOIN mdl_user
ON mdl_user.id = mdl_role_assignments.userid
WHERE mdl_grade_items.courseid = '2864'
AND mdl_user.username = '123456789'
如果忽略学生的注册状态,则可以简化查询(如有必要,稍后可能会筛选学生) 下面是一个示例,它将为您提供课程中用户的所有分数:
SELECT
u.id AS userid,
u.username AS studentid,
gi.id AS itemid,
c.shortname AS courseshortname,
gi.itemname AS itemname,
gi.grademax AS itemgrademax,
gi.aggregationcoef AS itemaggregation,
g.finalgrade AS finalgrade
FROM mdl_user u
JOIN mdl_grade_grades g ON g.userid = u.id
JOIN mdl_grade_items gi ON g.itemid = gi.id
JOIN mdl_course c ON c.id = gi.courseid
WHERE gi.courseid = :courseid AND u.username = :username;
如果这不合适,也许你可以从非技术性的角度解释你想要达到的目标。如果你忽略学生的入学状态,你可以简化查询(如果必要的话,也许以后会过滤学生) 下面是一个示例,它将为您提供课程中用户的所有分数:
SELECT
u.id AS userid,
u.username AS studentid,
gi.id AS itemid,
c.shortname AS courseshortname,
gi.itemname AS itemname,
gi.grademax AS itemgrademax,
gi.aggregationcoef AS itemaggregation,
g.finalgrade AS finalgrade
FROM mdl_user u
JOIN mdl_grade_grades g ON g.userid = u.id
JOIN mdl_grade_items gi ON g.itemid = gi.id
JOIN mdl_course c ON c.id = gi.courseid
WHERE gi.courseid = :courseid AND u.username = :username;
如果这不合适,也许你可以从非技术的角度解释你想要实现的目标。“它不起作用”:你是什么意思?你会得到错误的结果吗?部分结果?没有结果?错误?您可以共享您试图访问的表的表结构吗?“它不工作”:什么意思?你会得到错误的结果吗?部分结果?没有结果?错误?能否共享您尝试访问的表的表结构?