Sql 在没有明显层次结构的情况下使用层次检索重新创建视图

Sql 在没有明显层次结构的情况下使用层次检索重新创建视图,sql,views,hierarchical,connect-by,Sql,Views,Hierarchical,Connect By,作为我SQL课程的一部分(我只是一个新手),我有一个数据库,它以学生和测试为基础,他们可以作为学习课程的一部分 所以我有一个学生表,一个测试表,一个作者表,一个与测试相关的问题表等等 一项作业要求我创建各种视图,例如 此视图显示已通过测试的实例: CREATE OR REPLACE VIEW vuStudentsPassedAnyTest AS SELECT outer.passing_grade,s.firstname, s.lastname, h.test_id,h.student_id,

作为我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 employees表,其中employee_id和manager_id代表一种明确的父子关系,以及我找到的大多数示例,但有谁能告诉我如何将其纳入此类视图中


谢谢

您的示例查询表明您使用的是一种奇怪的sql风格。也许这个数据库有一个“分层检索”的概念,或者在你的教科书中有一个这样的定义。因此,我想知道您是否考虑了错误的层次结构。嗨,它只能是传统的层次结构,即父级>>子级使用“开始于/连接于之前”等,因为这是我们在本课程中介绍的唯一层次结构。问题是我看不出它如何真正适用于这些观点。。