簡體   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