作为我的 SQL 课程的一部分(我只是一个新手),我有一个基于学生和测试的数据库,他们可以作为学习课程的一部分参加。
所以我有一张学生表、一张测试表、一张作者表、一张与测试相关的问题表等。
一项任务要求我创建各种视图,例如
此视图显示已通过的测试实例:
CREATE OR REPLACE VIEW vuStudentsPassedAnyTest
AS
SELECT outer.passing_grade,s.firstname, s.lastname, h.test_id,h.student_id,h.score
FROM test_history h,students s,test_id outer
WHERE h.student_id=s.student_id
AND outer.test_id=h.test_id
AND score > = (SELECT passing_grade
FROM test_id inner
WHERE inner.test_id=h.test_id);
或者这个显示从未被问过的问题
SELECT question_id
FROM questions
MINUS
SELECT question_id
FROM student_answer_history;
如此直接的观点本身,总共大约有 5 个。
这是我正在努力的部分:
作业的第二部分要求我使用分层检索更有效地重新创建这些视图。
我没有看到任何明显的层次结构,除了一个测试可以由许多学生通过,或者一个学生可以通过几个测试。
我不认为我会在这些视图中使用分层查询,除非我被要求这样做......而且因为没有包含父 id 类型列的表,我正在努力解决如何完成它。
我很清楚原理及其工作原理,比如使用 hr 员工表,其中employee_id 和 manager_id 代表明确的父/子关系,我找到的大多数示例都可以参考,但是谁能给我一个指导如何将其纳入这些观点?
谢谢!!