Объединенная таблица из двух таблиц 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 Engine включен и работает на другой неприсоединенной таблице.
1 ответ
Короткий ответ:
Операторы CREATE для таблиц FEDERATED требуют дополнительного фрагмента данных, который называется CONNECTION. Отсутствие этих данных в вашем утверждении является источником синтаксической ошибки.
Длинный ответ:
Для этого конкретного случая VIEW будет лучшим инструментом, чем таблица FEDERATED.
Механизм хранения FEDERATED может быть похож на символическое соединение в Linux или ярлыки в Windows. Он в основном используется для доступа к таблице на сервере, который на самом деле хранит таблицу не локально, а на другом сервере MySQL. По этой причине, когда вы создаете таблицу FEDERATED, вам также необходимо включить CONNECTION, которую механизм хранения FEDERATED должен использовать в операторе CREATE. Вы можете выбрать создание таблицы FEDERATED на том же хосте, где хранятся данные, но это приведет к дополнительным издержкам, вызванным ненужными шагами, предпринятыми для доступа к локальным данным. Пожалуйста, смотрите эту ссылку для более подробной информации.
С другой стороны, VIEW похож на сохраненный запрос, который выполняется всякий раз, когда вы запрашиваете таблицу VIEW. Эта страница может дать вам больше информации об этом.