Соединение таблиц разных баз данных

Задача
Вы хотите использовать таблицы в соединении, но они расположены в разных базах данных.

Решение
Используйте спецификатор имени базы данных, чтобы сообщить MySQL, где следует искать таблицы.

Обсуждение
Бывают ситуации, когда необходимо выполнить соединение двух таблиц, расположенных в разных базах данных. Для этого укажите имена столбцов и таблиц достаточно полно для того, чтобы MySQL могла понять, на что именно вы ссылаетесь. Мы использовали таблицы shirt и tie, неявно подразумевая, что обе они находятся в базе данных cookbook, так что можно ссылаться на таблицы, не указывая имени базы данных. Например, следующий запрос извлекает сочетания элементов двух таблиц:

mysql> SELECT shirt.item, tie.item FROM shirt, tie;

+-----------+--------------+
| item | item |
+-----------+--------------+
| Pinstripe | Fleur de lis |
| Tie-Dye | Fleur de lis |
| Black | Fleur de lis |
| Pinstripe | Paisley |
| Tie-Dye | Paisley |
| Black | Paisley |
| Pinstripe | Polka Dot |
| Tie-Dye | Polka Dot |
| Black | Polka Dot |
+----------+--------------+

Но предположим, что таблица shirt находится в базе данных db1, а tie – в базе данных db2.


Чтобы сообщить об этом MySQL, перед именем каждой таблицы добавим префикс, определяющий базу данных, к которой относится таблица. Соединение с полной формой указания имен выглядит так:

SELECT db1.shirt.item, db2.tie.item FROM db1.shirt, db2.tie;

Если текущая база данных не выбрана, или это база данных, отличная от db1 и db2, необходимо указывать имена в полной форме. Однако если db1 или db2 является текущей базой данных, то можно обойтись без некоторых спецификаторов. Например, если текущая база данных – db1, то можно опустить спецификаторы db1:

SELECT shirt.item, db2.tie.item FROM shirt, db2.tie;

И наоборот, если текущей базой данных является db2, то нет необходимости в префиксах db2:

SELECT db1.shirt.item, tie.item FROM db1.shirt, tie;

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Вставка записей в таблицу, включающую значения из другой
Вывод списков для записей «главная-подчиненная» и итогов
Вычисление разности между последовательными строками
Вычисление рейтинга команд
Выявление и удаление несвязанных записей