Как я могу использовать эти 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); }
Этот вопрос не имеет ничего общего с 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?