MS Access 2013 中的嵌套 SQL 联接
Posted
技术标签:
【中文标题】MS Access 2013 中的嵌套 SQL 联接【英文标题】:Nested SQL Joins in MS Access 2013 【发布时间】:2015-12-28 05:18:57 【问题描述】:我对数据进行了规范化,并一直在尝试跨多个表显示数据。我对 SQL 还很陌生,所以请多多包涵。
我要做的是显示尚未分配给项目的任务,但包含来自各种表的数据,例如项目标题、公司等(使用 LEFT JOIN 和 WHERE 子句)。
有效的原始代码:
SELECT Tasks.ID, Projects_Tasks.ProjectID
FROM Tasks LEFT JOIN Projects_Tasks ON Projects_Tasks.TaskID = Tasks.ID
WHERE Projects_Tasks.ProjectID IS NULL;
嵌套连接代码(不起作用):
SELECT Tasks.ID, Projects.ProjectTitle, ProjectManagers.FirstName, ProjectManagers.LastName, Companies.Company
FROM ((((Tasks
LEFT JOIN Projects_Tasks ON Projects_Tasks.TaskID = Tasks.ID)
INNER JOIN Projects_Tasks ON Projects_Tasks.ID = Projects.ID)
INNER JOIN Projects ON Projects.ID = Projects_Tasks.ProjectID)
INNER JOIN ProjectManagers ON ProjectManagers.ID = Projects.ProjectManagerID)
INNER JOIN Companies ON Companies.ID = ProjectManagers.CompanyID
WHERE Projects_Tasks.ProjectID IS NULL;
我尝试了很多组合,但我就是无法让它发挥作用。我试过颠倒我的嵌套连接的顺序(以防它从下到上执行),我试过了
【问题讨论】:
我问你为什么要嵌套这些连接? 看起来你加入Projects_Tasks
的表你也加入了..
请详细说明“不起作用”。您的最后一句话似乎也缺少一些东西。
【参考方案1】:
我不喜欢编写 SQL 语句。不过,Access 的好处是它可以在查询中为您生成 SQL 语句
使用查询生成器:
选择表 Project_Tasks & Project_Managers & 所有其他表 你想显示数据 选择您要显示的所有相关数据字段 在您有“ProjectID”字段的地方,Criteria 部分需要有“Is Null”(但不要加引号)然后,保存查询并运行它。 (您可能只使用该查询,或者删除 SQL 语句)
祝你好运!
【讨论】:
以上是关于MS Access 2013 中的嵌套 SQL 联接的主要内容,如果未能解决你的问题,请参考以下文章