У меня проблема с моим запросом, и мне нужно объединить две таблицы из разных баз данных, теперь моя проблема заключается в том, как я могу выполнить свой запрос. Я получил формат синтаксиса здесь
Сначала перейдите по этой ссылке, чтобы понять, почему мой синтаксис SQL похож на этот
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query
Я использую CodeIgniter, и вот идея моего запроса:
Обратите внимание, как я выбираю свои столбцы: DATABASE_NAME.TABLE_NAME.COLUMN_NAME
$ENROLLEES = $this->load->database('ENROLLEES', TRUE); $ACCOUNTS = $this->load->database('ACCOUNTS', TRUE); $SELECT = "SELECT $ACCOUNTS.BALANCES_TABLE.IDNO, $ACCOUNTS.BALANCES_TABLE.balance"; $FROM = "FROM $ACCOUNTS.BALANCES_TABLE"; $WHERE = "$ACCOUNTS.BALANCES_TABLE.IDNO IN (SELECT $ENROLLEES.ENROLLEES_TABLE.IDNO FROM $ENROLLEES.ENROLLEES_TABLE)"; $SQL = $SELECT ." ". $FROM ." ". $WHERE;
ОСНОВНАЯ ПРОБЛЕМА: Как выполнить мой запрос?
Если мы сделаем это в CodeIgniter:
$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);
Как я могу выполнить свой запрос, что Im имеет несколько баз данных? Что я здесь дам
[database]->query($SQL);
?
$query = $this->db->query($SQL); return $query->result_array();
Если общий сервер баз данных имеет логин, который имеет привилегии для обеих баз данных и просто выполняет запрос, похожий на:
$query = $this->db->query(" SELECT t1.*, t2.id FROM `database1`.`table1` AS t1, `database2`.`table2` AS t2 ");
В противном случае, я думаю, вам придется запускать 2 запроса отдельно и исправить логику впоследствии.
Я вижу, что @ Þaw упомянул:
$ENROLLEES = $this->load->database('ENROLLEES', TRUE); $ACCOUNTS = $this->load->database('ACCOUNTS', TRUE);
CodeIgniter поддерживает несколько баз данных. Вам нужно сохранить ссылку базы данных в отдельной переменной, как вы это делали выше. Пока вы правы / правильны.
Затем вы должны использовать их, как показано ниже:
$ENROLLEES->query(); $ENROLLEES->result();
а также
$ACCOUNTS->query(); $ACCOUNTS->result();
Вместо того, чтобы использовать
$this->db->query(); $this->db->result();
См. Это для справки: http://ellislab.com/codeigniter/user-guide/database/connecting.html