当前位置:   article > 正文

现有三个表:学生表(学生id,姓名)、课程表(课程id,课程名)、学生选课表(学生id,课程id),请问要列出所有学生的选课情况(每个学生选了多少门课,分别是什么),请写出SQL语句_有学生、课程、选课三个表,请编写sql,查询张三同学的选课信息

有学生、课程、选课三个表,请编写sql,查询张三同学的选课信息

要求:用一条sql查出每个学生选了多少门课程,分别是什么

一、先建三张表:分别是学生表students、课程表classes、学生选课表stuclass
在这里插入图片描述在这里插入图片描述在这里插入图片描述

二、先分别查出每个学生选了多少门课程和每个学生分别选了哪些课程,sql语句

#每个学生选了多少门课程
SELECT
    s.id,
    s. NAME,
    count(*) count
FROM
    students AS s
LEFT JOIN stuclass AS sc ON s.id = sc.stu_id
GROUP BY
    s.id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
# 每个学生选了哪些课程
SELECT
    stu_id,
    GROUP_CONCAT(c.classname) class
FROM
    stuclass AS sc
LEFT JOIN classes AS c ON c.id = sc.class_id
GROUP BY
    sc.stu_id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

然后只要把两条sql合并成一条就可以了

SELECT
    *
FROM
    (
        SELECT
            s.id,
            s. NAME,
            count(*) count
        FROM
            students AS s
        LEFT JOIN stuclass AS sc ON s.id = sc.stu_id
        GROUP BY
            s.id
    ) a
LEFT JOIN (
    SELECT
        stu_id,
        GROUP_CONCAT(c.classname) class
    FROM
        stuclass AS sc
    LEFT JOIN classes AS c ON c.id = sc.class_id
    GROUP BY
        sc.stu_id
) b ON b.stu_id = a.id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

查询结果如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/449959
推荐阅读
相关标签
  

闽ICP备14008679号