我正在使用 Microsoft Access,因为这是我的教授想要的。我设计了一个大学数据库。我有一个学生表,其中包含学生专业的部门代码(部门表中的 FK 到 DCode)。一个学生辅修表,其中包含 SSN(学生表中的 FK 到 SSN)和 DCode(也是部门表中的 FK 到 DCode)。
因此,学生表直接指向 Department 中的 DCode,并且还通过代理指向stud_minor
。下面是关系图,应该可以清楚说明:
教授说,大多数学生不会有辅修专业,为了避免出现大量空值,最好将辅修专业作为自己的表,可以通过多值属性或 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