我需要帮助来设计此查询。我不能使用 JOIN 语句。同一列在两个不同的上下文中被引用

我需要帮助来设计此查询。我不能使用 JOIN 语句。同一列在两个不同的上下文中被引用

我正在使用 Microsoft Access,因为这是我的教授想要的。我设计了一个大学数据库。我有一个学生表,其中包含学生专业的部门代码(部门表中的 FK 到 DCode)。一个学生辅修表,其中包含 SSN(学生表中的 FK 到 SSN)和 DCode(也是部门表中的 FK 到 DCode)。

因此,学生表直接指向 Department 中的 DCode,并且还通过代理指向stud_minor。下面是关系图,应该可以清楚说明:

学生、院系和 Student_minor_in 表

教授说,大多数学生不会有辅修专业,为了避免出现大量空值,最好将辅修专业作为自己的表,可以通过多值属性或 m:n 关系。

无论哪种方式都会产生相同的效果。问题是,我需要查询并获取学生的名字、姓氏、专业和辅修专业。如果我添加 WHERE 子句,Student.SSN = stud_minor.Stud_ssn那么我将看不到所有人,我只会看到表中的人stud_minor

我不知道如何查询这个,也不能使用连接语句。教授从来没有教过我们,也不希望我们使用它们。这只是糟糕的设计吗?

不一定要求直接回答,例如“这是您需要的查询”,但也许您可以为我指明正确的方向。任何帮助都非常感谢。

答案1

您可以使用相关子查询来代替JOIN

SELECT FName
, LName
, [Major_DCode]
, (SELECT [Minor_DCode] FROM [STUD_MINOR] AS x 
    WHERE x.[STUD_SSN]=STUDENT.SSN) AS MINOR 
FROM STUDENT

相关内容