Mysqli объединяет таблицы из двух разных баз данных

Как я могу использовать эти 2 соединения для запуска запроса, который объединяет 2 таблицы? yesno.table1 и sushi.table1? скажем, мы присоединяемся к id оба они имеют одинаковый идентификатор. Как мне это сделать?

 // Connect to Yesno Database $this->yesno_db = new mysqli("red", "yesno", "***", "yesnotmp"); if ($this->yesno_db->connect_errno) { throw new Exception('Connection failed: '.$this->yesno_db->connect_error); } // Connect to Sushi Database $this->sushi_db = new mysqli("red", "sushi", "***", "sushi"); if ($this->sushi_db->connect_errno) { throw new Exception('Connection failed: '.$this->sushi_db->connect_error); } 

Solutions Collecting From Web of "Mysqli объединяет таблицы из двух разных баз данных"

Этот вопрос не имеет ничего общего с mysqli (или любым другим API).

Чтобы выполнить соединение с таблицей из другой базы данных, пользователь, который подключается к mysql, должен иметь права SELECT для обеих баз данных.

Сделав это, просто выберите одну из баз данных в своем заявлении о соединении и обратитесь к другому, используя обычный синтаксис точки:

 SELECT * FROM t1 JOIN db2.t2 

Чтобы ответить на ваш вопрос буквально,

Могу ли я использовать эти 2 подключения для запуска запроса, который объединяет 2 таблицы?

Вы не можете

Это возможно, но не так, как вы пытаетесь это сделать.

Во-первых, вам нужно иметь пользователя mysql с разрешениями для доступа к обеим базам данных.

Затем вы просто ссылаетесь на вторичную базу данных как часть запроса.

Например

 // Connect to Database -- dbuser has permissions for database1 and database2 $this->db = new mysqli("localhost", "dbuser", "***", "database1"); $query = "SELECT t1.*, t2.* FROM table_one AS t1 INNER JOIN database2.table_two as t2 ON ( t1.id = t2.remote_id ) "; 

Это невозможно, если базы данных находятся на двух разных серверах.

Это возможно, но не очень.

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

Этот предыдущий ответ может помочь: –

MySQL – объединяется между базами данных на разных серверах с помощью Python?