sql - 从不相关的表中获取数据
问题描述
我有这个数据库'SCHOOL'的作业
- 表学生(StudentID、姓名、姓氏等)\
- 表应用程序(ApplicationID、StudentID、ClassID)\
- 表类(ClassID、ClassName、TeacherID)\
- 表老师(TeacherID、姓名、姓氏等)
数据库中还有其他一些表和列,但我认为它们对这个查询并不重要。
我需要获取没有学生注册的班级的老师的姓名。假设没有人报名参加数学课,我需要获取该数学课老师的姓名。
SELECT Teacher.Name, Teacher.Surname, Class.ClassName
FROM Teacher
INNER JOIN Class ON Class.TeacherID = Teacher.TeacherID
INNER JOIN Application ON Application.ClassID = Class.ClassID
INNER JOIN Student ON Student.StudentID = Application.StudentID
WHERE Application.PredmetID IS NULL
帮助将不胜感激。
解决方案
我会推荐NOT EXISTS
:
select t.name
from class c join
teacher t
on t.teacherid = c.teacherid
where not exists (select 1
from application a
where a.classid = c.classid
);
推荐阅读
- spring-boot - 在 Spring Boot 中使用 UCANACCESS
- javascript - Redux - 调度在行动中未定义
- laravel - Laravel Gates,如何在 API 路由中使用它们?
- postgresql - PostgreSQL 突然性能不佳 select * from table
- bluetooth - 有没有办法从几英尺外检测到某个电话
- matlab - Matlab Precision只有8位?
- html - 在悬停时模拟检查器突出显示
- matlab - Matlab通过正则表达式从字符串单元格中提取
- google-cloud-firestore - Firestore 500 writes/sec per collection 限制如何在子集合组上起作用?
- javascript - 如何使用 NodeJS 合并到 MongoDB 中现有的唯一 ID?