sql - MS Acces Jet SQL 错误:多个连接条件不支持连接表达式
问题描述
我正在尝试在 Access 中运行此 SQL 表达式:
Select *
From ((TableA
Left Join TableB
On TableB.FK = TableA.PK)
Left Join TableC
On TableC.FK = TableB.PK)
Left Join (SELECT a,b,c FROM TableD WHERE b > 1) AS TableD
On (TableD.FK = TableC.PK AND TableA.a = TableD.a)
但它不断收到错误:不支持加入表达式。有什么问题?抱歉,我刚从 Jet-SQL 开始,在 T-SQL 中一切正常。谢谢
解决方案
问题是最终的外连接条件TableA.a = TableD.a
将导致查询包含不明确的外连接,因为要TableA
连接到的记录TableD
将取决于和之间TableA->TableB
的连接结果。TableB->TableC
TableC->TableD
为避免这种情况,您可能需要使用表之间的连接来构造查询TableA
,TableB
&TableC
存在于子查询中,然后将其结果外部连接到TableD
. 这明确定义了评估连接的顺序。
例如:
select * from
(
select TableA.a, TableC.PK from
(
TableA left join TableB on TableA.PK = TableB.FK
)
left join TableC on TableB.PK = TableC.FK
) q1
left join
(
select TableD.a, TableD.b, TableD.c, TableD.FK from TableD
where TableD.b > 1
) q2
on q1.a = q2.a and q1.PK = q2.FK
推荐阅读
- keras - 如何在带有 Keras 的 MLP 末尾添加几个二进制分类器?
- webrtc - 将 perframe 元数据从 webrtc 客户端传输到浏览器
- python - 将文本文件中的对象打印到字符串中的列表
- javascript - 在使用 ajax 发送之前将表单数据转换为 json
- sql - Redshift / Postgres SQL - 将顺序数据拆分为多行
- google-cloud-platform - 在 GCP 中迁移项目时出错,有人可以帮助我吗?
- python - 是否可以将抽象基类用作带有 dict 子类的 mixin?
- javascript - 无法使用 PHP 使用日期和日期对 csv 数据进行排序
- html - 在 IO 设备上查看时,电子邮件签名中的 HTML 表格会改变大小
- fiddler - Fiddler 无法跟踪流量,但 httpAnalyzer 可以(连接看起来像 websockets)