情况如下:
Teacher Performance和Student Performance实体,所以老师和学生可以参加相同的课程有他们的分数。Teaching Relation表,是的,教师和学生都可以出现在出勤率栏中,但是只有教师可以出现在教师栏中。在我们的系统中,id是数字的,我只是为了演示而将其命名。
教师绩效(Tb_tp)
t_id | score
------------------
JOHN | 5
ASHLEY | 6
STEVEN |4.5学生表现(Tb_sp)
s_id | score
------------------
SCOTT | 5
FRANK | 8
TIM | 7教学关系(Tb_tr)
t_id (teacher) | a_id for attendance id | a_type attendance type
------------------------------------------------------------------
ASHLEY | JOHN | teacher
ASHLEY | FRANK | student
ASHLEY | TIM | student
JOHN | ASHLEY | teacher
JOHN | FRANK | student期望的报告:
t_id | Score| avg_t AVG score from Teacher | avg_s AVG score from Student
--------------------------------------------------------------------------
ASHLEY | 6 | (5 from John) /1 | (8 from Frank + 7 from Tim)/2
--------------------------------------------------------------------------
JOHN | 5 | (6 from ASHLEY) /1 | (8 from Frank) / 1我们怎样才能做到这一点?我认为两个连接在一起或者合并两个查询,但是无论哪种方式都不能将结果保持在同一行并且是准确的。
发布于 2015-11-17 19:55:40
我认为你想要的技术是两个外部连接和一个聚合。这是我未经测试的通行证:
SELECT p.t_id, p.score, scores.avg_teacher_score, scores.avg_student_score
FROM teacher_performance p
JOIN (
SELECT t_id, AVG( t.score) AS avg_teacher_score, AVG( s.score ) AS avg_student_score
FROM teaching_relation tr
LEFT JOIN teacher_performance t ON t.t_id = tr.a_id AND tr.a_type='teacher'
LEFT JOIN student_performance s ON s.s_id = tr.a_id AND tr.a_type='student'
) scores
ON scores.t_id = p.t_idhttps://stackoverflow.com/questions/33765647
复制相似问题