基于桥接表关联学生、学期表的SQL SELECT查询编写
三表关联查询实现方案
由于tbl_stusem是tbl_student和tbl_sem的桥接关联表,直接通过三表等值关联就能拿到目标格式的结果集,关联逻辑如下:
- 用桥接表的
rollno字段匹配学生表的主键rollno,取学生的学号、姓名字段 - 用桥接表的
semID字段匹配学期表的主键semID,取学期ID、学期名称字段 - 最终只选取需求要求的4个输出字段,不需要返回的表字段无需纳入选择列表
可直接运行的查询语句如下:
SELECT stu.rollno, stu.firstname, sem.semID, sem.semName FROM tbl_student stu -- 关联桥接表,匹配学生和学期的关联关系 INNER JOIN tbl_stusem ssm ON stu.rollno = ssm.rollno -- 关联学期表,获取关联学期的具体名称 INNER JOIN tbl_sem sem ON ssm.semID = sem.semID -- 可选加排序,让结果按学号、学期顺序整齐排列 ORDER BY stu.rollno, sem.semID;
补充说明:
- 如果需要保留所有学生记录(哪怕学生没有关联任何学期,对应学期字段返回空值),可以将两处
INNER JOIN替换为LEFT JOIN - 如果只需要查询单个学生的对应学期记录,可在语句末尾添加过滤条件:
WHERE stu.rollno = 'B20171010'
内容的提问来源于stack exchange,提问作者tipah
相关产品推荐
相关产品推荐

