【SQL】关于sql多表查询:查询初一一班所有男生的英语成绩

student(学生信息表):
在这里插入图片描述
在这里插入图片描述

class(班级信息表):
在这里插入图片描述
在这里插入图片描述
score(学生成绩表):
在这里插入图片描述
在这里插入图片描述
需求:查询初一一班所有男生的英语成绩

思路:

1.明确查询条件:初一一班, 男生, 英语

2.明确查询结果:成绩

3.明确要查询的表:student, class, score

明确这三点以后,剩下的就是如何将条件组合起来。

试想下,生活中要知道一个学生的某一课程的成绩,首先要明确其班级,然后是其姓名,最后是课程名。

同理,我们可以通过以下步骤来明确sql:

①明确班级:

因为:student表通过class_id 关联class表,

所以:SELECT class_id FROM class WHERE class_name = "初一一班" ==> 获取该班的 class_id,从而和student表建立关联

②明确学生id:

因为:student表通过stu_id 关联 score表,

所以:SELECT stu_id from student where sex = "男" AND class_id = (SELECT class_id FROM class WHERE class_name = "初一一班") ==> 获取该班的 class_id,从而和student表建立关联

③通过学生id,关联到score表,并添加查询条件,课程名,来查询出成绩

SELECT stu.stu_name,sco.score FROM score sco 
LEFT JOIN student stu ON sco.stu_id = stu.stu_id
WHERE stu.class_id = (SELECT class_id FROM class WHERE class_name = "初一一班") 
AND stu.sex = "男" 
AND sco.sub_name = "英语";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cry丶

如果觉得有帮助的打个赏吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值