PostgreSQL技术问询:查询CptS专业SYS方向学生选修的课程信息
解决CptS专业SYS方向学生选修课程的查询问题
我来帮你梳理下这个查询的逻辑,直接给你对应的SQL语句和思路解释:
核心查询思路
要拿到目标数据,需要把涉及的表关联起来,一步步筛选:
- 先通过
tracks表锁定CptS专业的SYS方向 - 关联
student表找到对应方向的学生 - 再通过
enroll表找到这些学生选过的课程 - 最后从
course表提取课程号和学分,去重并排序
最终SQL语句
SELECT DISTINCT c.courseno, c.credits FROM course c JOIN enroll e ON c.courseno = e.courseno JOIN student s ON e.student_id = s.student_id JOIN tracks t ON s.track_id = t.track_id WHERE t.major = 'CptS' AND t.track_name = 'SYS' ORDER BY c.courseno;
关键细节说明
DISTINCT:确保同一门课程不会因为被多个学生选修而重复出现在结果里- 表关联:通过
JOIN依次串联所有相关表,保证数据的关联性和准确性 - 筛选条件:
WHERE子句精准定位到CptS专业的SYS方向学生 - 排序:
ORDER BY c.courseno让结果按课程号升序排列(如果需要降序,可加DESC后缀)
如果你的实际表结构和字段名和我假设的有差异(比如学生表和方向表的关联字段不是track_id),可以根据建表SQL里的字段名调整关联条件就行~
内容的提问来源于stack exchange,提问作者mrsquid
相关产品推荐
相关产品推荐

