2014-11-14 1 views
0

По некоторым причинам я получаю следующее сообщение об ошибке при выполнении запроса ниже:Федеративные таблицу из двух LEFT JOIN таблицы не работает

у Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «ENGINE = 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 "*****"; 

Примечание: FEDERATED Двигатель включен и работает на других не присоединяемой таблицы ,

ответ

0

Краткий ответ:
Операторы CREATE для таблиц FEDERATED требуют дополнительной информации, называемой СОЕДИНЕНИЕМ. Не наличие этих данных в вашем заявлении является источником синтаксической ошибки.

Длинный ответ:

В данном конкретном случае, взгляд был бы лучшим инструментом, чем таблицы FEDERATED.

ФЕДЕРАЛЬНЫЙ движок хранения может быть, хотя и похож на символическую ссылку в Linux или ярлыки в Windows. Он в основном используется для доступа к таблице на сервере, который на самом деле не хранит таблицу локально, а на другом сервере mysql. По этой причине при создании таблицы FEDERATED вам также необходимо включить СОЕДИНЕНИЕ, которое ФЕДЕРАЛЬНЫЙ механизм хранения должен использовать в операторе CREATE. Вы можете выбрать создание таблицы FEDERATED на том же хосте, что данные хранятся, но это приведет к дополнительным накладным расходам, вызванным ненужными шагами, предпринятыми для доступа к локальным данным. Пожалуйста, см. this link для более подробной информации.

С другой стороны, VIEW похож на сохраненный запрос, который выполняется всякий раз, когда вы запрашиваете таблицу VIEW. This page может предоставить вам дополнительную информацию об этом.

+0

Я забыл включить строку подключения в свой вопрос, но у меня есть это и попытался в исходном запросе. по-прежнему та же ошибка .. – mediaroot

+0

ФЕДЕРАЛЬНАЯ система хранения работает по принципу «один к одному». Структура таблицы, существующая на вашем удаленном сервере mysql, должна быть точно дублирована на вашем локальном сервере mysql, с той лишь разницей, что это часть движка хранилища. –

+0

Предположим, у меня есть таблица с именем meta_value, которая существует на сервере A, и я хочу иметь возможность запрашивать ее на сервере B. Я бы сначала выпустил эту команду на сервере A: SHOW CREATE TABLE meta_value; Я бы взял результирующий оператор create (кроме части движка) и вставил его в Server B. Затем я добавил бы информацию FEDERATED внизу. –

Смежные вопросы