我的SQL在没有研究它2年后有点生疏,所以我无法找到一种方法来执行此操作。将2个SQL查询与公共字段和AVG合并
我需要从Moodle数据库获取一些数据,即学生评定其教师的反馈测试的平均值。
此SQL查询:
SELECT mdl_course.id, mdl_user.username FROM mdl_course
INNER JOIN mdl_context ON mdl_context.instanceid = mdl_course.id
INNER JOIN mdl_role_assignments ON mdl_context.id = mdl_role_assignments.contextid
INNER JOIN mdl_role ON mdl_role.id = mdl_role_assignments.roleid
INNER JOIN mdl_user ON mdl_user.id = mdl_role_assignments.userid
WHERE mdl_role.id = 3
回报这样的事情,以每门课程并作为其分配给老师的表。
COURSE_ID TEACHER
2 john
3 mary
4 john
现在,我的第二个SQL是这样的:
SELECT mdl_feedback.course, AVG(mdl_feedback_value.value) as average
FROM mdl_feedback_value
INNER JOIN mdl_feedback_item ON mdl_feedback_value.item = mdl_feedback_item.id
INNER JOIN mdl_feedback ON mdl_feedback.id = mdl_feedback_item.feedback
INNER JOIN mdl_feedback_completed ON mdl_feedback.id = mdl_feedback_completed.feedback
INNER JOIN mdl_user ON mdl_feedback_completed.userid = mdl_user.id
GROUP BY mdl_feedback.course
COURSE AVERAGE
2 3.5
3 3
4 3.25
我想对那些2个SQL查询作为重点
合并成一个是这样的,当然使用/ COURSE_IDTEACHER AVERAGE
john 3,375 <--- avg of 3,5 and 3,25 from each of john's courses
mary 3 <--- she has just one course so no math here
我不知道如何去做这件事,所以我很感激一点帮助:)正如我所说,我有一段时间没有使用SQL,所以我并不热衷于这些JOIN事情,也许我必须像在这里使用它们一样使用它们。
我正在使用MySQL 5.5.33,尽管这与Moodle有关,但答案并非真正以Moodle为中心,因为这里唯一重要的是两个查询的输出是什么表。
感谢
我不确定如何解决这个问题,但我看到你的左连接,我将在下一次遇到像这样的挑战时使用 – fernandopcg