Puis-je joindre deux tables provenant de différentes bases de données?

J'ai deux tables de database différentes qui doivent (interne) se join. Une table provient d'une database MSSQL et l'autre provient d'une database MySQL. Je suis presque sûr qu'il n'est pas possible de joindre ces tables au niveau de la database, donc je vais devoir le faire en PHP (le langage de script que j'utilise).

Juste pour clarifier certaines choses, il s'agit d'get des informations sur les commands. Ma database MSSQL contient des colonnes telles que order_description , order_description , delivery_date , etc. Ma database MySQL a le même ID de command avec un état (par exemple "started", "paused", "ready", "deliver"). Ce que je veux, c'est que toutes les informations soient réunies dans une même table.

Je pensais get toutes les informations de la database MSSQL et ensuite CHOISIR l'état pour chaque groupe de la database MySQL, mais c'est un énorme problème de performance: si j'ai 1000 lignes je devrai faire 1000 SELECTs.

Quelque chose qui serait vraiment parfait est de faire un simple SELECT sur les deux bases de données, mettre les résultats dans deux arrays différents et merge les arrays. Je sais qu'il existe une fonction PHP appelée array_merge_recursive() , mais qui colle les deux arrays set au lieu de les joindre sur la key primaire ( order_id ).

Quel est le meilleur moyen d'get les deux tables de la database dans un aperçu?

Je chercherais à créer un server lié au server MySQL à partir de SQL Server. Ensuite, vous pouvez coder une jointure entre les deux tables comme si elles se trouvaient sur le même server. Si vous créez une vue, vous pouvez effectuer une sélection sur la vue depuis votre application. Je pense que ce serait plus rapide que de faire la "jointure" dans votre application. Il devrait certainement être plus facile de coder.

Pour coder la vue, vous devez utiliser une convention de nommage en quatre parties pour faire reference au server MySQL:

Exemple:

 select * from mysqlsrv.mydb1..mytbl join mssql.mydb2.dbo.myOtherTbl 

Si vous voulez utiliser les keys de deux arrays, qui sont égaux, et ne replace que les valeurs, vous avez simplement besoin de array_merge () .

Si les arrays d'input ont les mêmes keys de string, la valeur ultérieure de cette key replacea la précédente. Si, toutefois, les arrays contiennent des keys numériques, la valeur ultérieure ne replacea pas la valeur d'origine, mais sera ajoutée.

Les valeurs dans le tableau d'input avec les keys numériques seront renumérotées avec des keys d'incrémentation commençant à zéro dans le tableau des résultats.

Toutefois, prendre l'information des deux bases de données et l'écrire dans un tableau est toujours la même chose que prendre l'information avec SELECT et utiliser les lignes récupérées comme des correspondances dans un autre SELECT.