需要查找两个关系中不参与其自然连接的所有元组



模式如下:

Student-schema =(studentnum, name, standing, gpa, major)
Class-schema = (schedulenum, semester, department, classnum, days, time, place, enrollment)
Instructor-schema = (name, department, office)
Teaches-schema = (name, schedulenum, semester)
Taking-schema = (studentnum, schedulenum, semester, grade)

我必须写一个查询来查找student和taking中所有不参与student和taking自然连接的元组。结果是一个由来自student和taking的元组组成的单一关系,这些元组被适当地填充为空。

我能想到的唯一想法是获得学生/学生的完整连接,然后保留删除自然连接元组后剩下的元组。但我不知道该怎么做。这是目前为止我想到的最佳解决方案,但我没有选择行。我很确定我应该有结果了。我只是在寻找任何建议,SQL专业人士可能愿意分享。

SELECT*
FROM student full join taking ON student.studentnum = taking.studentnum
MINUS
SELECT*
FROM student,taking
WHERE student.studentnum = taking.studentnum;

这个sql代码在Oracle中工作!为了在您的DBMS中工作,您应该替换完整的外部连接和自然连接。

(SELECT * FROM student NATURAL FULL OUTER JOIN taking)-(SELECT * FROM student NATURAL INNER JOIN taking)

最新更新