繁体   English   中英

MS Access 2007语法:从Join加入Join Where

[英]MS Access 2007 syntax: From Join Join Join Where

我在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';

让我解释一下我的目标。 patron元组有1-3个patron_address元组。 这些地址行具有三种类型:

  1. 常驻
  2. 临时
  3. 电子邮件

也,

  • 顾客必须在address_type 1中有一个patron_address行
  • 顾客可能具有针对address_type 2的patron_address行
  • 顾客可能具有针对address_type 3的patron_address行

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

这就是为什么我要进行联接,这就是为什么我需要使用条件。 从逻辑上讲,每个联接的结果都应该有自己的where子句,但这显然是不允许的。 因此,我有一个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 ON PA3.patron_id = P.patron_id
where PA1.address_type = '1'
AND PA2.address_type = '2' 
AND PA3.address_type = '3';

从技术上讲,我删除了所有括号和最后一个“ ON”上的字母“ L”。 您键入“ ONL”而不是“ ON”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM