MS Access 2007语法:从加入加入加入位置

时间:2016-03-01 21:14:50

标签: sql join ms-access-2007 where-clause

我在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个patron_address元组。 这些地址行有三种类型:

  1. 永久
  2. 临时
  3. 电子邮件
  4. 此外,

    • 顾客必须拥有address_type 1
    • 的patron_address行
    • 顾客可以拥有address_type 2
    • 的patron_address行
    • 顾客可以拥有address_type 3
    • 的patron_address行

    我需要获取每个patron_id的所有地址行的地址信息。来自每个地址行的数据需要进入一个lare查询结果集中的列,然后我需要将其转换为制表符分隔文件以发送给供应商。

    这就是我正在进行连接的原因,这就是我需要使用标准的原因。 从逻辑上讲,每个连接的结果应该有自己的where子句,但显然不允许这样做。所以我有一个where子句列出了三个条件。问题是三个条件中只有一个适用于每个连接。

    那么我需要在概念上和语法上做什么来获得我想要的结果?最近几天感谢你对这个怪物的帮助。我想,我越来越近了。然后,我可能只是简单地移动了我的错误。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询: -

 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 ON PA3.patron_id = P.patron_id
where PA1.address_type = '1'
AND PA2.address_type = '2' 
AND PA3.address_type = '3';

从技术上讲,我删除了所有括号和字母" L"在最后" ON"。你键入了#34; ONL"而不是" ON"