【发布时间】:2016-01-29 04:03:35
【问题描述】:
这是我第一次使用 StackOverflow,我正在学习 SQL,但在连接等方面遇到了问题。今天我有一个挑战。
好的,下面是表格:
STUDENT
Student_ID Instructor_ID Adviser_ID
2 9723 9945
7 9723 9723
8 9801 9945
17 9945 9945
19 9624 9945
21 9723 9723
INSTRUCTOR
Instructor_ID Person_ID
9624 14
9723 15
9801 11
9945 16
PERSON
Person_ID Person_First_Name Person_Last_Name
1 Jim Johnson
2 John Doe
...
11 Chuck John
...
14 Joanne Jackson
15 Steven Pruck
16 Scott Buttermilk
... (Possibly More Records)
我试图获取的 SQL 查询是每个学生的讲师的姓名和作为他们顾问的讲师的姓名。格式如下:
Student_ID | Instructor's First and Last Name | Adviser's First and Last Name
另请注意,advisor_ID 与instructor_ID 相同。到目前为止,这是我想出的,但更进一步,我认为我需要两个内部连接或一些子查询:
SELECT STUDENT.Student_ID, Person.person_first_name + " " + Person.person_last_name AS Instructor
FROM STUDENT AS S, PERSON AS P, INSTRUCTOR AS I
WHERE S.Instructor_ID = I.Instructor_ID
AND I.person_ID = P.person_ID
ORDER BY S.Student_ID;
编辑:这是用于 Microsoft Access 数据库(以防万一)
【问题讨论】:
-
INSTRUCTOR表的用途是什么?似乎学生和教师之间的关系已经在STUDENT表中处理。 -
instructor Table 用于查找 Person_ID,您需要它才能在 Person 表中找到 Person 的姓名。
-
仍在寻找正确答案,因为我不相信这些对我有用。
-
我认为问题出在您的架构上,它没有被规范化。
INSTRUCTOR表在我看来是多余的,你可以不用它。答案正在尝试使用您给我们的内容。
标签: sql ms-access join relational-database inner-join