2011-01-07 91 views
1

我已經構建了一個MySQL數據庫來存儲賬單支付。我辦公室的每個人都有MS Access,所以我使用MS Access構建了一個前端數據庫報告工具,並鏈接到後端的MySQL表。使用MS Access合併3個表/查詢聯合查詢

我創建了一些引用MySQL表的訪問查詢,做了一些操作,現在想要將三個查詢(具有相同的表結構)合併爲一個可以構建我的報告的查詢。

通過我的研究(article1,article2和其他人),我發現聯合查詢是我需要的。我可以聯合2表很好,但當我嘗試聯合第三,查詢無法執行。我已經單獨測試了每個組合的聯合查詢,(1-2,1-3,2-3)以及任何組合都適用。我想了解我可能做錯了什麼,以便將第三個查詢合併到單個聯盟中。你能提供任何建議嗎?

表1 = A 表2 = B 表3 = C

SELECT A.Year, A.BillingQuarter, A.Name, A.ObjectCode, A.Amount 
FROM A 

UNION ALL SELECT B.Year, B.BillingQuarter, B.Name, B.ObjectCode, B.Amount 
FROM B 

UNION ALL SELECT C.Year, C.BillingQuarter, C.Name, C.ObjectCode, C.Amount 
FROM C 

;

* UPDATE * 導出每個查詢到獨立的表之後,我能夠運行3臺UNION ALL查詢,並把它們合併起來。所以這個問題顯然在於我嘗試聯盟3的查詢,而不是在3個表格中。思考?

謝謝!

+0

你能詳細說明「執行失敗嗎?」你有錯誤嗎?查詢是否超時? – 2011-01-07 19:58:32

+0

你可以嘗試使用UNION而不是UNION ALL嗎? – 2011-01-07 20:04:13

回答

0

我不能在Access中測試它,但它可以在SQL Server中工作,請選擇帶有UNION的前兩個表作爲派生表,然後選擇UNION表C和派生表。

SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM 
    (SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A 
    UNION ALL 
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B) 
    AS Derived 
    UNION ALL 
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C 

這可能是值得看看架構設計/關係,看看是否可以避免。

0

您需要用分號(;)結束查詢。見下:

SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM 
    (SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A 
    UNION ALL 
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B) 
    AS Derived 
    UNION ALL 
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C;