【发布时间】:2016-03-01 21:14:50
【问题描述】:
我在 Access 2007 中工作,我使用 SQL 比使用 Access 更舒服。在阅读了该站点上与 MS Access 中的连接相关的几个线程后,我认为我这样做是正确的,但有人告诉我我的 where 子句有语法错误。这是新的改进版:
FROM (( Patron P
INNER JOIN Patron_Address PA1 ON
(PA1.patron_id = P.patron_id)
LEFT JOIN Patron_Address PA2 ON
(PA2.patron_id = P.patron_id)
LEFT JOIN Patron_Address PA3 ONL
(PA3.patron_id = P.patron_id)
where PA1.address_type = '1'AND
PA2.address_type = '2' AND
PA3.address_type = '3';
让我解释一下我的目标。 赞助人元组有 1-3 个赞助人地址元组。 这些地址行有三种类型:
- 永久
- 临时的
- 电子邮件
还有,
- 一个读者必须有一个地址类型 1 的读者地址行
- 一个读者可能有一个地址类型 2 的读者地址行
- 一个读者可能有一个地址类型 3 的读者地址行
我需要获取每个patron_id 的所有地址行的地址信息。来自每个地址行的数据需要进入 lare 查询结果集中的列,然后我需要将其转换为制表符分隔的文件以发送给供应商。
这就是我要加入的原因,也是我需要使用标准的原因。 从逻辑上讲,每个连接的结果都应该有自己的 where 子句,但这显然是不允许的。所以我有一个 where 子句列出了三个条件。问题在于,三个条件中只有一个适用于每个连接。
那么我需要在概念上和句法上做什么才能得到我想要的结果?感谢最近几天对这个怪物的帮助。我快接近了,我想。再说一次,我可能只是移动了我的错误。
【问题讨论】:
-
我已经使 SQL 渲染得更好一些,但它可能仍然与正在整理的缩进有关。使用预览工具并确保您的问题看起来不错可能有助于获得答案。
-
我使用 SQL 比使用 Access 更舒服...考虑到 Access 运行 SQL,一种特殊用途的声明性编程语言,这很有趣。
标签: sql join ms-access-2007 where-clause