2017-09-23 42 views
0

我需要一些幫助,使下面的SQL代碼的工作:「加入表達不支持」 - 上的Microsoft Access需要幫助查詢

SELECT MemberData.MemberID, Transaction.TrxID, Transaction.Date, 
Transaction.GroupID, TransactionDetails.CashIn, TransactionDetails.CashOut 

FROM [Transaction] 
INNER JOIN (MemberData LEFT JOIN TransactionDetails 
      ON MemberData.[MemberID] = TransactionDetails.[MemberID]) 
ON Transaction.[TrxID] = TransactionDetails.[TrxID]; 

錯誤下面,說明不斷彈出:

加入表達不支持」

什麼我做錯了,我該如何解決這個問題?

+0

@Parfait,基本上是前編輯我的回答(+格式化的加入更清楚,因爲我不喜歡怪異的第一個列表中的所有表,然後所有的條款,訪問一樣),不幸的是,那不是。 –

回答

1

我無法確定錯誤的確切來源,但對於大多數Join expression not supported錯誤的簡單修復方法是一次執行一次連接,並使用子查詢。

SELECT MemberData.MemberID, T.TrxID, T.[Date], 
T.GroupID, T.CashIn, T.CashOut 
FROM (
    SELECT [Transaction].TrxID, [Transaction].Date, [Transaction].GroupID, TransactionDetails.CashIn, TransactionDetails.CashOut, TransactionDetails.[MemberID] 
    FROM [Transaction] 
    LEFT JOIN TransactionDetails ON [Transaction].[TrxID] = TransactionDetails.[TrxID] 
) AS T 
INNER JOIN MemberData ON MemberData.[MemberID] = T.[MemberID]; 
+0

非常感謝您的回答!但是,我仍然使用您的代碼得到相同的錯誤 – Poomind

+0

嘗試當前的編輯。這一個使用子查詢,所以它可能會慢一些,但會起作用。 –

+0

它要求我輸入一個參數「T.TransactionDetails.TrxID」? – Poomind

0

@Poomind @Erik馮Asmuth只要改變INNER JOINRIGHT JOIN你可以嘗試粘貼下一個SQL語句到一個新的查詢。

 
SELECT MemberData.MemberID, T.TrxID, T.[Date], T.GroupID, T.CashIn, T.CashOut
 
FROM (SELECT [Transaction].TrxID, [Transaction].Date, [Transaction].GroupID, 
      TransactionDetails.CashIn, TransactionDetails.CashOut, TransactionDetails.[MemberID] 
    FROM [Transaction] 
    LEFT JOIN TransactionDetails ON [Transaction].[TrxID] = TransactionDetails.[TrxID]) 
AS T RIGHT JOIN MemberData ON MemberData.[MemberID] = T.[MemberID]; 

當我在一個示例數據庫保存了該查詢,MS-訪問(2003年版),把它改成下面的SQL語句。所以,不要擔心,如果這也發生在你身上。

 
SELECT MemberData.MemberID, T.TrxID, T.[Date], T.GroupID, T.CashIn, T.CashOut 
FROM [SELECT [Transaction].TrxID, [Transaction].Date, [Transaction].GroupID, TransactionDetails.CashIn, TransactionDetails.CashOut, TransactionDetails.[MemberID] 
    FROM [Transaction] 
    LEFT JOIN TransactionDetails ON [Transaction].[TrxID] = TransactionDetails.[TrxID] 
]. AS T RIGHT JOIN MemberData ON MemberData.[MemberID] = T.[MemberID]; 
+0

@ Wilson-Vargas Thanx更改爲language_sql! – JonRo

+0

這將返回一個語法錯誤。 (你用括號'[]'和'TransactionDetails。[TrxID]]替換了括號'()',做了一些奇怪的事情,AS T'也是無效的SQL)。當然,您可以在我的回答中將'INNER JOIN'更改爲'RIGHT JOIN',但交易信息可能不完整。從'MemberData'和'Transaction'都具有的所有內容的唯一方法是'FULL OUTER JOIN',這是不受支持的。 –

+0

@ErikvonAsmuth事實上,我刪除了一個空格:'TrxID]] .AS T'必須是'Trx]]。作爲T'。關於替換的大括號'()'和括號'[]':如上所述,它是由MsAccess(2003版)製作的。關於語法錯誤,我也能夠製作他。也許我應該就這個現象制定一個單獨的問題? – JonRo