SQL使用联接从多个表中选择记录

SQL使用联接从多个表中选择记录,sql,join,Sql,Join,我想为下面的场景创建一个SQL select查询。我有6张桌子 1) 大学 大学id 大学名称 2) 学院 学院id 学院名称 大学id(FK) 3) 系 部门id 部门名称 学院id(FK) 4) 科目 受试者id 主题名称 5) 学生 学生证 学生姓名 部门id(FK) 受试者身份证(FK) 6) 学生科 学生证(FK) 受试者身份证(FK) 标记 我要每个学科和每个大学的分数总和。请为同一主题提供建议和SQL语句。每个主题的分数: SELECT su.subject

我想为下面的场景创建一个SQL select查询。我有6张桌子

1) 大学

  • 大学id
  • 大学名称
2) 学院

  • 学院id
  • 学院名称
  • 大学id(FK)
3) 系

  • 部门id
  • 部门名称
  • 学院id(FK)
4) 科目

  • 受试者id
  • 主题名称
5) 学生

  • 学生证
  • 学生姓名
  • 部门id(FK)
  • 受试者身份证(FK)
6) 学生科

  • 学生证(FK)
  • 受试者身份证(FK)
  • 标记
我要每个学科和每个大学的分数总和。请为同一主题提供建议和SQL语句。

每个主题的分数:

SELECT su.subject_Name,
       sum(ss.marks)
FROM student_subject ss
JOIN subjects su ON ss.subject_id = su.subject_id
GROUP BY su.subject_Name
每所大学的分数:

SELECT u.university_name,
       sum(ss.marks)
FROM student_subject ss
JOIN student st ON st.student_id = ss.student_id
JOIN department d ON d.dept_id = st.dept_id
JOIN college c ON c.college_id = d.college_id
JOIN university u ON u.univ_id = c.univ_id
GROUP BY u.university_name
这应该起作用:

SELECT u.university_name, su.subject_name, sum(ss.marks) sum_of_marks
FROM university u
JOIN college c ON c.univ_id=u.univ_id
JOIN department d ON d.college_id=c.college_id
JOIN student st ON st.dept_id = d.dept_id
JOIN student_subject ss ON ss.student_id=st.student_id
JOIN subjects su ON su.subject_id=ss.subject_id
GROUP BY  u.university_name, su.subject_name

您尝试过什么吗?我尝试过使用内部联接的SQL语句,但由于我在使用联接编写SQL方面的经验很少,所以进展不大。如果您能描述一下您遇到的困难,那就更好了。如果有人为您编写查询,您将在需要其他查询时再次需要帮助。请阅读并点击谷歌的“stackexchange家庭作业”。展示你能做的部分,解释你被卡住的地方,以及你能做的部分。打个招呼。通过帖子编辑而不是评论来澄清。谢谢,我想要一个select语句来获得每所大学、每门学科的“总分”。