2017-08-16 44 views
1

我一直在尋找一個在線單個表上的多個工會的例子,只有我發現類似於我遇到的問題的解決方案是thread多個工會ms訪問

這是查詢我已經建立在MS Access

SELECT chat_tb.tag_1 AS [tag_desc], Count(chat_tb.tag_1) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_1 
UNION 
SELECT chat_tb.tag_2 AS [tag_desc], Count(chat_tb.tag_2) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_2 
UNION 
SELECT chat_tb.tag_3 AS [tag_desc], Count(chat_tb.tag_3) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_3; 

,但我得到了下面的錯誤,林假設,因爲它是連接到MySQL表我不能執行工會作爲當前的語法,任何人都可以幫助我將其更改爲mysql格式,提前謝謝!

注意:如果我刪除最後一個聯合聲明的作品。

View Error Message

ODBC - 調用失敗。 {MySQL] {ODBC 3.51驅動程序]你的SQL語法有錯誤; (選擇'tag',Count('tag_2')FROM'chat_tb'GROUP BY'tag_2'))UNIO'在第1行(#1064)附近使用的正確語法對應的手冊)

我發現了一個又一個thread類似的問題

,並做了以下內容:

SELECT chat_tb.tag_1 AS [tag_desc], Count(chat_tb.tag_1) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_1; 
UNION ALL (

SELECT chat_tb.tag_2 AS [tag_desc], Count(chat_tb.tag_2) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_2; 

UNION ALL 

SELECT chat_tb.tag_3 AS [tag_desc], Count(chat_tb.tag_3) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_3 
)); 

這給了我

+4

刪除前兩個分號(即兩個聯合語句之前的分號) –

+0

也不需要爲每個查詢提供別名字段名稱,因爲查詢將只使用第一個查詢中的那些 - 所以可以刪除AS [tag_desc ]等,從第二個查詢。 –

+0

@JonathanWillcock這並沒有改變任何東西,不幸的是,我想我需要MySql SQL語句,因爲MS Access是鏈接到MySQl表。 –

回答

2

了「聯合查詢語法錯誤」剛纔我設法複製你的問題,你正在做的是試圖運行查詢a是MySQL鏈接表上的一個Access查詢。在做了一些研究後,這似乎是一個已知的錯誤:請參閱here。你不能有多個聯盟。它確實可以作爲SQL Pass-Through使用。在設計選項卡上,選擇聯合下的傳遞(全球符號)。這確實意味着你需要選擇你的DNS來運行它。

+0

這是一個有趣的錯誤。仍然在MS Access 13/16中作爲bug指向更早版本的Access和MySQL?如果你在'SELECT'語句周圍刪除括號,怎麼樣? – Parfait

+0

@Parfait我試過並嘗試過。我甚至試圖通過將它分解爲兩個Access查詢(這兩個查詢都單獨工作)然後對這些查詢進行聯合嘗試來作弊。但沒有快樂!我想實際上這個錯誤並不在Access中,而是在來自Oracle的ODBC驅動程序中。我在Access中使用ODBC與其他後端,並從未見過相同。 –

+0

@JonathanWillcock謝謝你! –