我正在使用Access 2003並進行表查詢。錯誤3296:MS Access查詢中不支持的連接表達式與多個JOIN
這個想法是,我有多個表包含資金列表上的各種信息,我試圖將它們結合起來。所有的表格都有FundID作爲其中一個領域,這是我們用來識別每個基金的領域。有一個表格,不時更新字段MER。所以我們必須在適用期間應用MER值。這是我的SQL代碼:
SELECT
[Fund Mapping].FundID,
[Fund Mapping].FundName,
[MarketValues].DateLookup,
[MarketValues].[SumOfCurrentAmt]/100 AS [MV By Fund],
[Fund Prices @ Month End].Price,
IIf([MarketValues].DateLookup<"200908",[MER (08 to Jul 09)].MER,
IIf([MarketValues].DateLookup<"200911",[MER (Aug 09 to Oct 09)].MER,
IIf([MarketValues].DateLookup<"201008",[MER (Nov 09 to Jul 10)].MER,
IIf([MarketValues].DateLookup<"201106",[MER (Aug 10 to May 11)].MER,[MER (Jun 11 to present)].MER)
)
)
) AS MER
INTO [Fund Data]
FROM [Fund Mapping],
[MER (08 to Jul 09)] RIGHT JOIN
([MER (Aug 09 to Oct 09)] RIGHT JOIN
([MER (Nov 09 to Jul 10)] RIGHT JOIN
([MER (Aug 10 to May 11)] RIGHT JOIN
([MER (Jun 11 to present)] RIGHT JOIN
([MarketValues] INNER JOIN [Fund Prices @ Month End]
ON ([MarketValues].DateLookup = [Fund Prices @ Month End].DateLookup)
AND ([MarketValues].FundID = [Fund Prices @ Month End].[Fund ID]))
ON [MER (Jun 11 to present)].FundID = [MarketValues].FundID)
ON [MER (Aug 10 to May 11)].FundID = [MarketValues].FundID)
ON [MER (Nov 09 to Jul 10)].FundID = [MarketValues].FundID)
ON [MER (Aug 09 to Oct 09)].FundID = [MarketValues].FundID)
ON [MER (08 to Jul 09)].FundID = [MarketValues].FundID
GROUP BY
[Fund Mapping].FundID,
[Fund Mapping].FundName,
[MarketValues ].DateLookup,
[SumOfCurrentAmt]/100,
[Fund Prices @ Month End].Price,
IIf([MarketValues].DateLookup<"200908",[MER (08 to Jul 09)].MER,
IIf([MarketValues].DateLookup<"200911",[MER (Aug 09 to Oct 09)].MER,
IIf([MarketValues].DateLookup<"201008",[MER (Nov 09 to Jul 10)].MER,
IIf([MarketValues].DateLookup<"201106",[MER (Aug 10 to May 11)].MER,[MER (Jun 11 to present)].MER)
)
)
)
ORDER BY
[Fund Mapping].FundID,
[MarketValues].DateLookup;
DateLookup是格式爲YYYYMM的字符串。我之所以使用RIGHT JOIN而不是INNER JOIN,是因爲可以添加新的基金,所以早期的MER表格不會包含所有的FundID。 「MarketValues INNER JOIN基金價格@月底」表應該是整個事情的基礎 - 它擁有所有的資金,沒有任何東西應該從這裏掉下來。
當我試圖保存查詢時,它給了我一個錯誤消息,說不支持JOIN表達式。我不知道什麼是錯,或者我可以如何解決它。
請幫忙嗎?提前致謝!
========== UPDATE#1
我手動添加各聯接屬性和從頭設計視圖整個查詢的。它給了我幾乎相同的代碼,但允許我保存(上面的代碼給我一個錯誤,只要我試圖保存)。
但是,當我試圖運行查詢時,它給了我一個錯誤消息,說:「SQL語句無法執行,因爲它包含模糊的外部聯接。要強制其中一個聯接首先執行,創建一個單獨的查詢執行第一次連接,然後將該查詢包含在SQL語句中。「
難道沒有其他解決辦法嗎?
==========更新#2
於是我進一步挖了一下,並能夠解決問題,並有適當的運行查詢。
原來我所要做的就是加入[Fund Mapping]表格以及所有其他表格!也就是說,我所選擇的所有桌子都連接在一起。
只是想我應該給一個更新,以防其他人遇到同樣的問題。
謝謝你的幫助!
這是一個令人恐懼的SQL,我會在這種情況下嘗試編寫VBA過程。 – 2012-03-02 19:38:48
感謝您的建議,馬特,但我能夠解決它,而無需通過VBA麻煩!好極了!:) – Emily 2012-03-02 20:02:08