查询年龄不大于 20 岁的教师所教的所有课程的课程名(Lintcode刷题)

简介: 题目如下描述请编写 SQL 语句, 联合教师表(teachers)和课程表(courses),查询课程表中年龄不大于 20 岁的教师所教的所有课程的课程名(name)。表定义:teachers(教师表)表定义:courses(课程表)样例样例一:

题目如下


描述


请编写 SQL 语句, 联合教师表(teachers)和课程表(courses),查询课程表中年龄不大于 20 岁的教师所教的所有课程的课程名(name)。


表定义:teachers(教师表)



表定义:courses(课程表)



样例

样例一:

表内容 : teachers



表内容:courses





很明显,这个题可能用到连接查询(因为我们需要根据教师表的年龄作为限制条件,来查到可能表中相应的课程。所以我们需要两张表。但是我们还可以按照常规的思维模式。分开查询)


方法一:(常规思维)


select
    name
from 
    courses 
where
    teacher_id in (
        select
            id
        from
            teachers
        where
            age <= 20
    );


解析,我们要查询的是课程名字,那么select name是没有问题这样写的,然后这个可能名字来自courses表,所以from courses表。然后条件是什么呢?条件是老师的年龄小于等于20,年龄在teachers表中,所以我们写出基本的条件,然后利用这个条件,我们对courses表的所要查的课程名进行限制,两表只有对应的id可以进行限制,所以我们从限制符合该条件的id进行限制我们要获取的课程名。(id作为了连接的条件)


方法二:显式内连接


select
    t2.name
from 
    teachers as t1 join courses as t2
    on
        t1.id = t2.teacher_id
where
    t1.age <= 20;


判断出连接查询,就直接进行写代码进行连接,分别将id作为连接条件,然后限制年龄,这样也可以直接求出来。


方法三:左连接查询


select c.name as name 
from courses c 
left join teachers t on c.teacher_id=t.id 
where t.age<=20;


左连接就是以左表为基准,按照左表匹配,右表没有的就会为置为空,而右连接反之。


相关文章
|
2月前
|
SQL 数据库连接 数据库
查询每位学生成绩大于85的课程
【8月更文挑战第5天】查询每位学生成绩大于85的课程。
40 7
|
5月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_91 不同性别每日分数总计
「SQL面试题库」 No_91 不同性别每日分数总计
|
5月前
|
关系型数据库 MySQL
mysql重点题目--查询“01“课程比“02“课程成绩高的学生的信息及课程分数
mysql重点题目--查询“01“课程比“02“课程成绩高的学生的信息及课程分数
130 0
|
5月前
|
关系型数据库 MySQL
Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
98 0
教务系统以数组的方式输入6位同学的成绩,输出平均成绩(调用函数,结果保留两位小数)并分别按照成绩高低显示出每位同学的成绩状况。
教务系统以数组的方式输入6位同学的成绩,输出平均成绩(调用函数,结果保留两位小数)并分别按照成绩高低显示出每位同学的成绩状况。
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
587 0
|
算法 关系型数据库 MySQL
查询01课程比02课程成绩高的学生信息及其分数
查询01课程比02课程成绩高的学生信息及其分数
输入5个同学的3门课程成绩,计算各门课程的总分及平均分
输入5个同学的3门课程成绩,计算各门课程的总分及平均分
446 0
输入5个同学的3门课程成绩,计算各门课程的总分及平均分
|
安全 Java 数据安全/隐私保护
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)
四、学生评教管理系统java版(对学生的增删改查,对课程的增删查,老师的添加,教师对课程的排课,查询教师与课程号的对应信息,学生登录并授课评价),并且对其进行了优化,在主方法中全部可以实现(附源代码)
|
存储 Java
Java初学者作业——编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数。
Java初学者作业——编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数。
619 0
Java初学者作业——编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数。