我有以下表格,需要对它们运行查询。
师:
teacher_code
initial
name
学生:
stud_no
initial
insertions
name
birth_date
address
city
class_code
类别:
class_code
classname
Module:
module_code
modulename
Teacher_module:
teacher_code
module_code
class_code
等级:
stud_no
module_code
date
grade
我需要编写的查询如下。
J. Doe没有教授哪些科目(科目名称)?
这就是我能想到的:
SELECT t.Initial, t.name, m.modulename
FROM Teacher AS t
NATURAL JOIN
Module AS m
NATURAL JOIN
Teacher_module AS tm
ON
t.teacher_code = tm.teacher_code
WHERE t.Initial <> 'J'
AND
t.name <> 'Doe'
这个查询是否正确?.....我无法对此进行测试,因为我在纸上进行测试并且没有测试的示例dB。
感谢您的帮助。
答案 0 :(得分:0)
我认为“主题”是模块的同义词。您的WHERE子句选择的不是J或Doe的教师,而不是J Doe不教的模块。它将是这样的:
快速尝试
SELECT m.modulename
FROM Module m
WHERE NOT EXISTS
( SELECT * FROM teacher_Module tm
INNER JOIN Teacher t
ON t.teacher_code = tm.teacher_code t.Initial = 'J' AND t.name = 'Doe'
WHERE tm.module_code = m.module_code )
你也可以使用左连接到teacher_Module和Teacher,然后检查tm.module_code是否为空。