Moodle数据库API错误:为一个用户获取一门课程所有部分的测验分数

Moodle数据库API错误:为一个用户获取一门课程所有部分的测验分数,moodle,Moodle,我试图获得某一特定用户在该课程所有部分的特定课程的总分 下面的查询可以在mysql中工作并给出正确的结果,但不能在数据库API调用中工作 $sql=“选择d.section作为section\u id,d.name作为section\u name,sum(a.sumgrades)作为mdl\u测验a、mdl\u测验b、mdl\u课程模块c、mdl\u课程模块d,其中a.userid=6和b.course=4,a.quick=b.id和c.instance=a.quick和c.module=14,

我试图获得某一特定用户在该课程所有部分的特定课程的总分

下面的查询可以在mysql中工作并给出正确的结果,但不能在数据库API调用中工作

$sql=“选择d.section作为section\u id,d.name作为section\u name,sum(a.sumgrades)作为mdl\u测验a、mdl\u测验b、mdl\u课程模块c、mdl\u课程模块d,其中a.userid=6和b.course=4,a.quick=b.id和c.instance=a.quick和c.module=14,a.sumgrades>0和d.id=c.section按d.section分组”

我尝试了不同的API调用,主要是我想要的

$DB->get_records_sql($sql)

API调用的结果毫无意义。有什么建议吗


PS:这是moodle 2.2。

我只是尝试做一些类似的事情,只是没有得到章节。您只需要课程和用户id。我希望这对您有所帮助

global $DB;

// get all attempts & grades from a user from every quiz of one course 
$sql = "SELECT qa.id, qa.attempt, qa.quiz, qa.sumgrades AS grade, qa.timefinish, qa.timemodified, q.sumgrades, q.grade AS maxgrade
        FROM {quiz} q, {quiz_attempts} qa
        WHERE q.course=".$courseid."
        AND qa.quiz = q.id
        AND qa.userid = ".$userid."
        AND state = 'finished'
        ORDER BY qa.timefinish ASC"; 
$exams = $DB->get_records_sql($sql);

// calculate final grades from sum grades
$grades = array();
foreach($exams as $exam) {
    $grade = new stdClass;
    $grade->quiz = $exam->quiz;
    $grade->attempt = $exam->attempt;
    // sum to final
    $grade->finalgrade = $exam->grade * ($exam->maxgrade / $exam->sumgrades);
    $grade->grademax = $exam->maxgrade;
    $grade->timemodified = $exam->timemodified;
    array_push($grades, $grade);
} 

这在最新的moodle版本中有效。穆德尔2.9。尽管我仍然对更好的解决方案持开放态度,因为这确实是一种获取关于用户性能的更深入分析的黑客方式

这与获取特定课程所有部分的分数总和并不完全相同。我想要每一个部分。