需要JOIN验证的SQL查询

时间:2014-03-29 17:05:21

标签: mysql sql sql-server

我有以下表格,需要对它们运行查询。

师:

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。

感谢您的帮助。

1 个答案:

答案 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是否为空。