2014-11-14 32 views
0

對於一些原因,執行下面的查詢時,我收到以下錯誤表:聯合表格JOIN不工作

你在你的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用 附近的「發動機= FEDERATED」在行手冊35

CREATE TABLE users AS (
    SELECT 
    ID, user_email, user_registered, 
    first_name.meta_value as first_name, 
    last_name.meta_value as last_name, 
    telephone.meta_value as telephone, 
    country.meta_value as country, 
    company.meta_value as company, 
    address.meta_value as address, 
    city.meta_value as city, 
    professional_title.meta_value as professional_title, 
    state.meta_value as state, 
    areas_of_interest.meta_value as areas_of_interest 
    FROM wp_users 
    LEFT JOIN wp_usermeta AS first_name ON first_name.user_id=ID 
     AND first_name.meta_key='first_name' 
    LEFT JOIN wp_usermeta AS last_name ON last_name.user_id=ID 
     AND last_name.meta_key='last_name' 
    LEFT JOIN wp_usermeta AS telephone ON telephone.user_id=ID 
     AND telephone.meta_key='telephone' 
    LEFT JOIN wp_usermeta AS country ON country.user_id=ID 
     AND country.meta_key='country' 
    LEFT JOIN wp_usermeta AS company ON company.user_id=ID 
     AND company.meta_key='company' 
    LEFT JOIN wp_usermeta AS address ON address.user_id=ID 
     AND address.meta_key='address' 
    LEFT JOIN wp_usermeta AS city ON city.user_id=ID 
     AND city.meta_key='city' 
    LEFT JOIN wp_usermeta AS professional_title ON professional_title.user_id=ID 
     AND professional_title.meta_key='professional_title' 
    LEFT JOIN wp_usermeta AS state ON state.user_id=ID 
     AND state.meta_key='state' 
    LEFT JOIN wp_usermeta AS areas_of_interest ON areas_of_interest.user_id=ID 
     AND areas_of_interest.meta_key='areas_of_interest' 
) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION "*****"; 

注:聯邦引擎是和其他非連接表工作。

回答

0

簡短回答:
FEDERATED表的CREATE語句需要額外的一段稱爲CON​​NECTION的數據。在您的語句中沒有該數據是語法錯誤的來源。

龍答:

對於這種特定情況下,一個VIEW會比聯合表格更好的工具。

FEDERATED存儲引擎可以是類似於Linux中的符號鏈接或Windows中的快捷方式。它主要用於訪問服務器上的表,但實際上並不是在本地存儲表,而是在不同的mysql服務器上。因此,當您創建FEDERATED表時,還必須包含FEDERATED存儲引擎應在CREATE語句中使用的CONNECTION。您可以選擇在存儲數據的同一主機上創建FEDERATED表,但這會導致額外的開銷,這是由於訪問本地數據所採取的不必要的步驟。有關更多詳細信息,請參見this link

另一方面,VIEW就像是一個存儲查詢,只要你查詢VIEW表就執行。 This page可以給你更多的信息。

+0

我忘了在我的問題中包含連接字符串,但我已經使用它並嘗試使用原始查詢。仍然是相同的錯誤.. – mediaroot 2014-11-14 14:33:01

+0

FEDERATED存儲引擎工作在一對一的匹配。存在於遠程mysql服務器上的表結構必須忠實地複製到本地mysql服務器上,唯一不同的是存儲引擎部分。 – 2014-11-14 15:42:27

+0

假設我有一個名爲meta_value的表,它存在於服務器A上,我希望能夠在服務器B上查詢它。我首先在服務器A上發出以下命令:SHOW CREATE TABLE meta_value;我會將所得到的create語句(引擎部分除外)粘貼到Server B中,然後在底部添加FEDERATED信息。 – 2014-11-14 15:46:07