web-dev-qa-db-fra.com

Je peux charger des données de la base de données Joomla et de la base de données externe?

Il est possible de joindre 2 bases de données en même temps en une seule requête? Par exemple: je veux voir le nombre d'utilisateurs que j'ai sur mon serveur et combien d'utilisateurs sur un serveur externe, le tout dans une seule requête SQL.

J'ai testé l'utilisation de l'union et de JDatabase: http://docs.joomla.org/Using_the_union_methods_in_database_querieshttp://docs.joomla.org/How_to_connect_to_an_external_database

Mon code:

 // Crée un nouvel objet de requête. 
 $ Db1 = ExternalDataBase :: getDbo (); 
 $ Db = JFactory :: getDBO (); 
 
 $ query1 = $ db1-> getQuery (true); 
 $ query1 
 -> select ('COUNT (id) AS users_number') 
 -> à partir de '' #__ utilisateurs '); 
 
 $ requête = $ db-> getQuery (true); 
 $ requête 
 -> sélectionner (' COUNT (id) AS users_number ') 
 -> de (' #__ utilisateurs ') 
 -> union ($ query1); 
 
 $ usersNumber = $ db-> setQuery ($ query ) -> loadObjectList (); 

La deuxième requête doit sélectionner l'utilisateur de la base de données externe ne fonctionne pas.

Tout le monde a une idée comment résoudre ce problème, merci.

1
Jordi

L'objet de requête est créé à partir d'une connexion à une base de données. Il ne peut pas gérer deux bases de données connectées dans une même requête.

Pour résoudre le problème, il est préférable d'activer l'accès au niveau de MySQL. Si les deux bases de données sont locales, vous pouvez simplement attribuer des autorisations pour accéder à la deuxième base de données à votre utilisateur de base de données. De cette manière, la requête multi-base de données est résolue efficacement par le serveur MySQL.

2
Anibal