2017-10-19 64 views
0

我一直被困在这个问题上整晚,不得不跳过它,并回来(对不起,我有点小菜)。MS-Access:从两个表格中选择数据,只返回你需要的

该问题要求显示只在这些课程中的学生的课程名称和姓名。我试过ORDER BY,GROUP BYINNER JOIN但是Course_Name没有出现在两张桌子上。

SELECT First_Name, Last_Name, Course_Name 
    FROM Student, Course 
    ORDER BY Course_Name; 

这是最接近我已经能够得到,它返回所有的学生,但它们列在所有课程,而不仅仅是他们的具体是什么,我以后是课程。

任何帮助? :)

我有两个表,CourseStudent

Course有这些列:

Course_ID 
Course_Name 

Student

First_Name 
Last_Name 
Course_Name 
+0

你需要在'INNER读了JOIN's,这可能有帮助:https://msdn.microsoft.com/en-us/library/bb243855(v=office.12).aspx – Moseleyi

回答

1

你有课的课程列表表格和学生列表放在学生表格中,但是你需要再多一个表格作为CourseSt拥有代表哪些学生参加哪些课程的数据的学生。

一般来说(您可能认为这是常见做法)CourseStudents表由2列组成:课程表的外键和学生表的外键。

然后,你需要这样的查询:

SELECT First_Name, Last_Name, Course_Name 
FROM CourseStudents 
INNER JOIN Student ON CourseStudents.StudentID = Student.StudentID 
INNER JOIN Course ON CourseStudents.CourseID = Course.CourseID 
ORDER BY Course_Name 
+0

你是我们lcoma,并且可能你的CourseStudent表名和ID字段名称是不同的,因为我填写了上面的名字。如果它解决了您的问题,请不要忘记将其标记为答案... – Noxthron

0

我想,有了这种数据结构,如果仅查询“学生”表,你会得到你想要的东西(SELECT * FROM STUDENT)。

这个数据结构允许1个学生在1个课程。 Noxthron说,可能你想尝试修改它。

表学生 名字 姓氏 StudentID

表场 CourseName CourseID

表CourseAssignment - > CourseStudents如说Noxthron StudentID CourseID