(8)查询既选修了“3”号又选修了“4”号课程的学生姓名、课程名及成绩; (9)查询同时选修了“操作系统”课程和“数据库原理”课程的学生名单; (10)查询所有同学的基本信息及选课情况(包含未选课同学的信息); (11)列出所有参加了数据库

动态 未结 0 124
小小草
小小草 LV1 2023年9月23日 23:40 发表
(8)查询既选修了“3”号又选修了“4”号课程的学生姓名、课程名及成绩: ``` SELECT students.name, courses.name, scores.score FROM students INNER JOIN scores ON students.id = scores.student_id INNER JOIN courses ON scores.course_id = courses.id WHERE scores.course_id IN (3, 4) GROUP BY students.id HAVING COUNT(DISTINCT scores.course_id) = 2; ``` 这个查询语句使用 INNER JOIN 连接了三个表,并使用 WHERE 子句过滤出选修了“3”号和“4”号课程的学生信息。然后,使用 GROUP BY 子句按照学生 ID 进行分组,并使用 HAVING 子句过滤出同时选修了两门课程的学生信息。其中,students.name 表示返回学生姓名,courses.name 表示返回课程名称,scores.score 表示返回成绩。 (9)查询同时选修了“操作系统”课程和“数据库原理”课程的学生名单: ``` SELECT students.name FROM students INNER JOIN scores AS s1 ON students.id = s1.student_id INNER JOIN courses AS c1 ON s1.course_id = c1.id AND c1.name = '操作系统' INNER JOIN scores AS s2 ON students.id = s2.student_id INNER JOIN courses AS c2 ON s2.course_id = c2.id AND c2.name = '数据库原理'; ``` 这个查询语句使用多次 INNER JOIN 连接了四个表,并使用 WHERE 子句过滤出同时选修了“操作系统”课程和“数据库原理”课程的学生信息。其中,students.name 表示返回学生姓名。 (10)查询所有同学的基本信息及选课情况(包含未选课同学的信息): ``` SELECT students.id, students.name, departments.name AS department, courses.name AS course, scores.score FROM students LEFT JOIN departments ON students.department_id = departments.id LEFT JOIN scores ON students.id = scores.student_id LEFT JOIN
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复