2010-01-13 7 views

Répondre

0
+0

Salut merci pour la réponse ... mais j'ai déjà eu la connexion à deux dbs et peut basculer entre deux sans aucun doute ... mais ne sais pas comment contraster le sql pour une jointure de la table de remorquage assis dans deux bases de données. plz me conseille .. merci. – sha

-1

Si les bases de données sont sur le même serveur et votre utilisateur a accès à tous les deux, vous pouvez utiliser le chemin complet - SELECT bdd .table_name.col_name ...

Sinon, il n'y a aucune chance pour vous de les rejoindre à cause du principe. La jointure est faite par le serveur SQL - qui devrait se connecter à l'autre base de données ...

Sur Oracle, il existe une fonctionnalité appelée DBLink ... qui offre la possibilité de lier d'autres tables/vues depuis différents serveurs. Pas sûr de MySQL.

Pour effectuer des requêtes en utilisant des adaptateurs différents, vous pouvez utiliser:

$select1 = new Zend_Db_Select($adapter1); 
$select2 = new Zend_Db_Select($adapter2); 

Mais encore une fois, vous êtes toujours limité dans des choses comme l'union de ces deux ... Vous ne pouvez pas le faire en raison de la nature même de Fonctionnement de la base de données

+0

pas sûr du chemin complet, mais je suppose que cela devrait fonctionner –

+0

thx pour la réponse..mais la chose est de faire avec zend .... i adaptateurs hv pour chaque connexion et par nature je hv pour appliquer la requête en utilisant un adaptateur .. donc hw puis-je utiliser d'autres db dans un adaptateur séparé ... pouvez-vous me donner un exemple plz? – sha

+0

Édité la réponse. Je ne sais pas si c'est ce que vous cherchez. –

0

Construisez tableGateway à partir de votre dbAdapter avant de joindre deux tables provenant d'une base de données différente.

use use Zend\Db\Sql\Select; 
use Zend\Db\Sql\Where; 

$someCondition=new Where(); 
$someCondition->equalTo('columnName',$columnValue); 
//you can build $this->tableGateway from your DB adapter 
$rowset = $this->tableGateway->select(function (Select $select) use ($someCondition) { 
     $table2forInnerJoin = new \Zend\Db\Sql\TableIdentifier('table2Name', 'table2Database'); 
     $select->join(array('table2Name'=>$table2forInnerJoin),"table1Name.id = table2Name.id"); 
     $select->where($someCondition); 
}); 
return $rowset; 
Questions connexes