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

时间:2013-03-19 06:02:32

标签: sql sqlplus

这是架构:

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)

我必须编写一个查询,查找学生中的所有元组并将其视为不参与学生和学习的自然联接。结果是与学生和服用的元组的单一关系,适当地用空值填充。

我能想到的唯一想法就是获得学生/学习的完全加入,然后在删除自然连接元组后保留遗留下来的元组。但我不知道该如何解决这个问题。这是迄今为止我提出的最佳解决方案,但我没有选择任何行。我很确定我应该有一些结果。我只是在寻找SQL专业人员可能愿意分享的任何建议。

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

1 个答案:

答案 0 :(得分:1)

这个sql代码适用于Oracle!你应该替换完整的外连接和自然连接,以便在你的DBMS中工作。

(     SELECT * FROM student NATURAL FULL OUTER JOIN take ) 减去 (     SELECT * FROM学生NATURAL INNER JOIN服用 )