如何编写一个查询,根据 ms 访问的子表中的外键获取信息?
Posted
技术标签:
【中文标题】如何编写一个查询,根据 ms 访问的子表中的外键获取信息?【英文标题】:how to write a query where you get information based on the foreign key from a child table on ms access? 【发布时间】:2020-02-23 15:00:54 【问题描述】:我正在编写一个数据库,其中有 3 个表来存储数据,第四个表来存储实际操作我根据其外键(用户和课程表)从 2 个表中提取数据,然后我想提取大学名称基于课程表中的大学 ID。例如,如果操作表的课程 Id = 1 的外键,我想从课程表中课程 Id = 1 的大学表中提取名称。
关系:
这是拉取数据的查询,不加拉取学院名
SELECT First_Name, Second_Name, Last_Name, Course_Name, Date_Course, College_Name AS OperationDetails
FROM (Operations INNER JOIN Users ON Operations.User_id = Users.User_Id) INNER JOIN Courses ON
Operations.course_Id = Courses.Course_Id;
我已尝试加入大学表以提取大学名称,但我没有任何建议如何编写查询。
【问题讨论】:
【参考方案1】:您需要像这样再次加入Colleges
:
SELECT Users.First_Name, Users.Second_Name, Users.Last_Name,
Courses.Course_Name, Courses.Date_Course,
Coleges.College_Name AS OperationDetails
FROM (
(Operations INNER JOIN Users ON Operations.User_id = Users.User_Id)
INNER JOIN Courses ON Operations.course_Id = Courses.Course_Id
)
INNER JOIN Colleges ON Coleges.college_id = Courses.college_id;
最后一次联接基于 Courses
表的 college_id
,因为您说:我想从课程表中课程 ID = 1 的大学表中提取名称。
此外,您应该使用表名/别名来限定所有列名,并且在涉及多个表的情况下,您应该使用别名来使代码更短且更具可读性:
SELECT u.First_Name, u.Second_Name, u.Last_Name,
c.Course_Name, c.Date_Course,
g.College_Name AS OperationDetails
FROM (
(Operations AS o INNER JOIN Users AS u ON o.User_id = u.User_Id)
INNER JOIN Courses AS c ON o.course_Id = c.Course_Id
)
INNER JOIN Colleges AS g ON g.college_id = c.college_id;
【讨论】:
以上是关于如何编写一个查询,根据 ms 访问的子表中的外键获取信息?的主要内容,如果未能解决你的问题,请参考以下文章