sql - 使用 SQL 在 Access 中的 5 个表上进行内连接和左连接
问题描述
我正在尝试访问下表中的数据:
- 组织计划年
- ProjOrgPlnYrJunction
- 直流
- DCMaxEEContribLevel
- DCNonDiscretionaryContribLevel
基本上,我需要内部加入 OrgPlanYear + DC 和 ProjOrgPlnYrJunction 然后我需要左加入剩余的表(表 4 和表 5),因为表 1-3 包含我需要的所有行,只有一些表中有数据表 4 -5。我需要每个表中的几个变量。我还需要 WHERE 函数跨越所有字段(这意味着我希望所有这些数据用于 projectID=919 的选择组)。
请帮忙!
我尝试了很多错误的事情,包括尝试使用设计查询端(即 JOIN 函数问题、格式错误的 FROM 函数等)!这是一个排除我需要的所有变量的示例:
SELECT
ProjOrgPlnYrJunction.fkeyProjectID, OrgPlanYear.OrgName, DC.PlanCode, DCNonDiscretionaryContribLevel.Age,DCNonDiscretionaryContribLevel.Service
FROM
(((OrgPlanYear INNER JOIN DC ON OrgPlanYear.OrgPlanYearID = DC.fkeyOrgPlanYearID) INNER JOIN ProjOrgPlnYrJunction ON OrgPlanYear.OrgPlanYearID = ProjOrgPlnYrJunction.fkeyOrgPlanYearID)
LEFT JOIN
(SELECT DCNonDiscretionaryContribLevel.Age AS Age, DCNonDiscretionaryContribLevel.Service AS Service FROM DCNonDiscretionaryContribLevel WHERE ProjOrgPlnYrJunction.fkeyProjectID)=919)
LEFT JOIN (
SELECT DCMaxEEContribLevel.EEContribRoth FROM EEContribRoth WHERE ProjOrgPlnYrJunction.fkeyProjectID)=919)
ORDER BY OrgPlanYear.OrgName;
解决方案
您的查询的主要问题:
- 每个.
ON
_LEFT JOIN
SELECT
引用不同子查询中的其他表列WHERE
(例如,FROM DCNonDiscretionaryContribLevel WHERE ProjOrgPlnYrJunction.fkeyProjectID
)。- 每个 Access SQL 要求的子查询和连接周围的括号不匹配。
请参阅下面调整后的 SQL,它现在使用短表别名。请务必使用适当的列调整SELECT
和ON
子句。
SELECT p.fkeyProjectID, o.OrgName, DC.PlanCode, dcn.Age, dcn.Service, e.EEContribRoth
FROM (((OrgPlanYear o
INNER JOIN DC
ON o.OrgPlanYearID = DC.fkeyOrgPlanYearID)
INNER JOIN ProjOrgPlnYrJunction p
ON o.OrgPlanYearID = p.fkeyOrgPlanYearID)
LEFT JOIN
(SELECT Age AS Age, Service AS Service
FROM DCNonDiscretionaryContribLevel
WHERE fkeyProjectID = 919) AS dcn
ON dcn.fkeyProjectID = p.fkeyOrgPlanYearID)
LEFT JOIN
(SELECT EEContribRoth
FROM EEContribRoth
WHERE fkeyProjectID = 919) AS e
ON e.fkeyProjectID = p.fkeyProjectID
ORDER BY o.OrgName;
推荐阅读
- database - 有关 Informix 数据库 3.5 的信息
- r - 在 ggplot 图的图例中不需要换行
- java - 同步块锁定在类
- go - 使用 gorm Find() 检索多行时出现致命错误
- reactjs - 缩小反应错误 #321;访问 https://reactjs.org/docs/error-decoder.html?invariant=321
- c# - 在 Xamarin Forms 中单击后如何暂时禁用按钮?
- reactjs - 是否可以在 React 测试库中定义自定义 fireEvent?
- c# - 如何在 NUnit Core 的 ProcessModel 中分离调试器
- exchangewebservices - 如何使用 updateItem 同时更新读取和标记属性
- ruby - bundler_version_finder.rb:80:in `pwd': 不允许操作 - getcwd (Errno::EPERM)