gpt4 book ai didi

MySQL - 查询以查找不同级别类(class)的注册学生状态

转载 作者:行者123 更新时间:2023-11-29 00:25:55 27 4
gpt4 key购买 nike

我有 3 个表,studentsenrolmentscourses。任何学生都可以报读任何类(class),每门类(class)都有一个“级别”,从 1(初级)到 4(高级)。我正在尝试查找学生信息以检查学生是否注册了 1/2/3/4 级类(class)。我正在尝试通过以下方式获取学生注册信息结果:

结果:

==================================================================
student_id | student_name | level_1 | level_2 | level_3 | level_4
==================================================================
324245 Rick Grimes Yes Yes No No
324912 Maggie Greene Yes Yes Yes No

表结构如下:

结构:

学生表

=============================================
student_id | name | email | school_id | grade
=============================================

类(class)表

==============================================================================
course_id | name | description | level | credits | course_starts | course_ends
==============================================================================

入学表

============================================
id | student_id | course_id | enrolment_date
============================================

最佳答案

SELECT  a.student_id,
a.student_name,
CASE WHEN SUM(c.level = 1) > 0 THEN 'Yes' ELSE 'No' END level_1,
CASE WHEN SUM(c.level = 2) > 0 THEN 'Yes' ELSE 'No' END level_2,
CASE WHEN SUM(c.level = 3) > 0 THEN 'Yes' ELSE 'No' END level_3,
CASE WHEN SUM(c.level = 4) > 0 THEN 'Yes' ELSE 'No' END level_4
FROM students a
LEFT JOIN enrollments b
ON a.student_id = b.student_id
LEFT JOIN curses c
ON b.course_id = c.course_ID
GROUP BY a.student_id, a.student_name

您需要首先使用 LEFT JOIN 连接所有表因为您想向所有学生展示。本声明SUM(c.level = 1)统计level等于1的所有记录,如果结果大于0,则表示该学生修读了该level内的类(class)。

关于MySQL - 查询以查找不同级别类(class)的注册学生状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com