我有学生报告管理系统
在系统中有4个表格;
学生表存储学生姓名,学生ID等学生信息。
标记表格,用于存储每个科目中每个学生的分数,此表格链接到下表;
学生表 - >(student_id),科目表 - >(subject_id),班级表 - >(class_table)和教师表 - >(teacher_id)
标记表格表如下所示:
我希望能够从链接表中检索数据,然后对于mark_1,我想为该特定主题检索学生的标记。
我目前有这段代码,它的作用是,即使学生在历史中得到78%,78%将出现在孩子正在做的所有科目中,即使孩子没有得到78%
SELECT
DISTINCT(marks.test_1),
students.id,
students.student_id,
students.student_name,
subjects.subject_name,
forms.form_name,
teacherxsubject.form_id,
students.class,
teacherxsubject.subject_id,
teacherxsubject.teacher_id
FROM
students
LEFT JOIN
marks ON students.student_id = marks.student_id
LEFT JOIN
teacherxsubject ON students.class = teacherxsubject.form_id
INNER JOIN
subjects ON subjects.subject_id = teacherxsubject.subject_id
LEFT JOIN
forms ON forms.form_id = teacherxsubject.form_id
LEFT JOIN
marks a ON marks.subject_id=subjects.subject_id
WHERE
teacherxsubject.teacher_id = 1200717
AND students.class = 6
以下是查询返回的示例:
答案 0 :(得分:0)
你加入标记表两次......
LEFT JOIN
marks ON students.student_id = marks.student_id
首先关于学生ID,导致该学生的所有分数,然后
LEFT JOIN
marks a ON marks.subject_id=subjects.subject_id
然后在subjectid上,导致该主题的所有分数(对所有学生而言)......
您将在一个连接中同时想要两个;
LEFT JOIN
marks ON students.student_id = marks.student_id
AND marks.subject_id=subjects.subject_id
P.S。您的数据类型是什么?你有一个200个字符的字符串,2 x 10个字符串和一个int ...