这是架构:
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;
答案 0 :(得分:1)
这个sql代码适用于Oracle!你应该替换完整的外连接和自然连接,以便在你的DBMS中工作。
( SELECT * FROM student NATURAL FULL OUTER JOIN take ) 减去 ( SELECT * FROM学生NATURAL INNER JOIN服用 )