MS Access,如何通过子查询

时间:2016-07-02 06:26:48

标签: sql ms-access

我有3张桌子:
1 - tblMembers_Info
2 - 接合台
3 - tblCourses

我需要查询尚未完成特定课程的成员。

尝试手动完成后,我尝试了MS Access“查询向导”。我最终得到了:

保存的查询为Query1: //那个做过课程的查询

SELECT tblMembers_Info.*, tblCourses.CourseName
FROM tblMembers_Info 
INNER JOIN 
(tblCourses INNER JOIN tblMembers_Courses 
  ON tblCourses.IDCourses = tblMembers_Courses.IDCourses)
ON tblMembers_Info.Members_ID = tblMembers_Courses.Members_ID
WHERE (tblCourses.CourseName) In ('NameOftheCourse');

使用保存的Query1进行第二次查询:

SELECT tblMembers_Info.Members_ID, tblMembers_Info.FirstName, tblMembers_Info.LastName 
FROM tblMembers_Info 
    LEFT JOIN [Query1] 
      ON tblMembers_Info.[Members_ID] = Query1.[Members_ID] 
WHERE (((Query1.Members_ID) Is Null));

如何使用完整查询替换第二个查询中的Query1而不是使用QueryDef(保存的查询“Query1”)?

此外,有一种更好的方法可以确保编写该查询,我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:2)

您只需将function init() { img = new Image(); img.crossOrigin = "Anonymous"; img.src = "test.png"; } 替换为LEFT JOIN [Query1],其中LEFT JOIN (...) AS [Query1]应该是第一个查询的SQL,而不是结尾...

但我认为在您的具体情况下,使用;可能会提供更好的效果,以获得相同的结果:

NOT IN