仅用JOIN实现SQL交集查询:排查数英双授课资质教师查询无结果问题
问题原因
你编写的SQL存在逻辑互斥问题:
- 你对同一条
qualifiedTeacher记录的同一个cID字段,同时关联了两次Class表,要求这个cID对应的课程名同时为Math和English - 但
Class表中每个cID只会对应唯一的cname,不可能同时满足两个课程名的筛选条件,因此INNER JOIN后没有符合条件的记录,自然返回空结果。
正确写法(仅使用JOIN操作,无子查询)
我们需要对qualifiedTeacher表做自连接,匹配同一个教师pID对应的两条不同资质记录,分别关联Math和English的课程信息即可:
SELECT qt1.pID AS id FROM qualifiedTeacher qt1 INNER JOIN Class c1 ON qt1.cID = c1.cID AND c1.cname = 'Math' -- 自连接qualifiedTeacher表,匹配同一教师的其他资质记录 INNER JOIN qualifiedTeacher qt2 ON qt1.pID = qt2.pID INNER JOIN Class c2 ON qt2.cID = c2.cID AND c2.cname = 'English';
内容的提问来源于stack exchange,提问作者user16587297
相关产品推荐
相关产品推荐

