2017-04-25 161 views
1
SELECT VISA41717.Fraud_Post_Date, 
     VISA41717.Merchant_Name_Raw, 
     VISA41717.Merchant_City, 
     VISA41717.Merchant_Country, 
     VISA41717.Merchant_Category_Code, 
     VISA41717.ARN, 
     VISA41717.POS_Entry_Mode, 
     VISA41717.Fraud_Type, 
     VISA41717.Local_Amt, 
     VISA41717.Fraud_Amt, 
     VISA41717.Purch_Date, 
     VISA41717.Currency_Code, 
     VISA41717.Cashback_Indicator, 
     VISA41717.Card_Account_Num, 
     BIN.BANK, 
     BIN.COUNTRY 
FROM ((VISA41717 AS VS) 
    LEFT JOIN MASTERCARD_VISA AS MV ON VS.ARN = MV.MICROFILM_NUMBER) 
    RIGHT JOIN BIN AS B ON LEFT(Card_Account_Num, 6) = B.INT 
WHERE VISA41717.ARN IS NULL 
     OR MASTERCARD_VISA.MICROFILM_NUMBER IS NULL 
ORDER BY VISA41717.ARN; 

我想這個代碼,但給我一個錯誤多個連接在MS Access

連接表達式不被支持

然後,我這個嘗試之一:

SELECT VISA41717.Fraud_Post_Date, 
     VISA41717.Merchant_Name_Raw, 
     VISA41717.Merchant_City, 
     VISA41717.Merchant_Country, 
     VISA41717.Merchant_Category_Code, 
     VISA41717.ARN, 
     VISA41717.POS_Entry_Mode, 
     VISA41717.Fraud_Type, 
     VISA41717.Local_Amt, 
     VISA41717.Fraud_Amt, 
     VISA41717.Purch_Date, 
     VISA41717.Currency_Code, 
     VISA41717.Cashback_Indicator, 
     VISA41717.Card_Account_Num, 
     BIN.BANK, 
     BIN.COUNTRY, 
     LEFT(Card_Account_Num, 6) AS VBIN 
FROM VISA41717, 
    BIN 
    LEFT JOIN MASTERCARD_VISA ON (VISA41717.ARN = MASTERCARD_VISA.MICROFILM_NUMBER 
            AND VBIN = B.INT); 
WHERE VISA41717.ARN IS NULL 
     OR MASTERCARD_VISA.MICROFILM_NUMBER IS NULL 
ORDER BY VISA41717.ARN; 

仍然存在錯誤

語法錯誤連接運算符

我'試圖從兩個不同的表創建一個表。

預先感謝您。

+0

嘗試刪除*冗餘括號((VISA41717 AS VS) LEFT JOIN MASTERCARD_VISA AS MV ON VS.ARN = MV.MICROFILM_NUMBER)* – anatol

+0

仍然錯誤(「語法錯誤LEFT(Card_Account_Num,6)= B.INT 「)你能幫我解決這個問題嗎? – be33

回答

0

考慮添加LEFT JOIN到查詢相對於VISA41717表和甚至直接使用字符串表達式ON子句是在MS Access SQL可行在雖然與常量表達式不是:ID=7

然而,這樣的表述警告可能,如果你試圖查看該查詢設計視圖(假設你使用的GUI程序,MSACCESS.EXE)上升。請注意所需的括號配對。

... 
(FROM VISA41717 
LEFT JOIN MASTERCARD_VISA 
    ON (VISA41717.ARN = MASTERCARD_VISA.MICROFILM_NUMBER)) 
LEFT JOIN [BIN] 
    ON (LEFT(VISA41717.Card_Account_Num, 6) = [BIN].[INT]) 
+0

語法錯誤缺少運算符:( – be33

+0

嗯......語法上這是正確的,請確保連接列存在,檢查哪個表保存* Card_Account_Num *。另外,'INT'是[保留字](https:// support .office.com/en-us/article/Access-2007-reserved-words-and-symbols-e33eb3a9-8baa-4335-9f57-da237c63eabe)因此需要使用方括號或反勾號進行轉義。 – Parfait

0

當事情變得太令人費解,它可能有助於創建一個查詢,提供必需的字段:

SELECT *, LEFT(Card_Account_Num, 6) As Card_Account_Num6 
FROM VISA41717 
WHERE ARN IS NULL 

現在你可以使用查詢GUI設計與此查詢和表BIN源。