2010-02-24 4 views
1

У меня есть два веб-сайта, которые публикуют информацию о новостях. Я просто получил запрос на создание одной страницы для одного из сайтов, на которых показаны смешанные результаты с обоих сайтов. Они расположены на одном сервере, а таблицы близки к идентичным, но у меня возникают проблемы с выяснением того, как объединить два запроса. Публикации должны сортироваться по дате, названию, когда все сказано и сделано.Как я могу запросить две разные базы данных в одном запросе с помощью MySQL?

Ради аргументов, упрощенная форма таблиц

DB 1, Таблица Clips1 (PK_ID, DateToShow, название, описание)

DB 2, Таблица Clips2 (PK_ID, DateToShow, название, описание)

Таким образом, единственный запрос ударил обе базы данных (в настоящее время имена пользователей и пароли различаются) или два запроса и некоторая комбинация, которая сохранит сортировку даты и названий.

+0

Дополнительная информация, причина, по которой сайты отличаются друг от друга, состоит в том, что один из них испанский, а один - английский, и мы хотели, чтобы они были двумя совершенно разными сайтами (большая часть контента полностью отличается), однако запрос заключается в публикации английского материала а также добавить больше контента в испанскую версию. Если я не могу сделать это с помощью простого комбайна, я боюсь, что мне придется модифицировать администратор английского сайта для записи записей базы данных в обе области, что кажется мне грязным. – RiddlerDev

+0

извините! уже проголосовали, думал, что я тоже принял – RiddlerDev

ответ

1

IF Вы можете использовать одно соединение для запроса, это тривиально.

Вы говорите, что схемы находятся на одном сервере, поэтому с соответствующими разрешениями это не должно быть проблемой.

Общий синтаксис для этого:

SELECT schemaA.table.column 
FROM schemaA.table 
UNION 
SELECT schemaB.table.column 
FROM schemaB.table 

Вы можете даже сделать JOIN и, только не забудьте указать соответствующую схему для каждый таблицы и поля эталонным.

+0

У меня есть полный контроль над сервером, поэтому я предполагаю, что это так же просто, как создать совместное имя пользователя/пароль, прикрепленное к обеим базам данных для использования? – RiddlerDev

+1

Вы могли бы это сделать или просто предоставить существующему пользователю разрешения для другой БД. например 'GRANT ALL ON \' spanish_db \ ​​'. * TO 'english_user' @ 'somehost' IDENTIFIED BY 'english_pass'' – hobodave

+0

дорогой hobodave .. я просто редактировал мой ответ и когда я вернулся после редактирования моего ответа .. u дал мне отрицательная точка .. –

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