【问题标题】:how to write a query where you get information based on the foreign key from a child table on ms access?如何编写一个查询,根据 ms 访问的子表中的外键获取信息?
【发布时间】: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;

我已尝试加入大学表以提取大学名称,但我没有任何建议如何编写查询。

【问题讨论】:

    标签: sql ms-access join


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2019-05-06
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多