/ / Est-il possible de joindre deux tables (une Mysql, l'autre Oracle) à partir de deux serveurs différents en PHP? - php, mysql, sql, oracle, rejoindre

Est-il possible de joindre deux tables (One Mysql, l'autre Oracle) à partir de deux serveurs différents en PHP? - php, mysql, sql, oracle, join

Je vais épargner l'histoire en arrière, mais au fond, j'aideux bases de données différentes que je récupère des informations. 1 étant Oracle (auquel nous "avons seulement accès en lecture seule) et l'autre étant Mysql (auquel nous avons un accès complet). Mon problème est qu'il y a une colonne dans la table oracle qui manque que nous aimerions extraire y a-t-il un moyen d'écrire une instruction de jointure pour inclure cette colonne mysql à la table oracle? J'ai déjà vu des cas en ligne où des gens ont utilisé "LinkedServers", mais Je ne savais pas trop comment cela fonctionnait en PHP. Les connexions à la base de données sont stockées dans un fichier php et la fonction est appelée lorsque nous voulons utiliser cette base de données particulière.

tl; dr

Un utilisateur peut-il utiliser une jointure pour une table mysql et oracle? Si tel est le cas, comment peut-il être implémenté dans php quand l'info db est dans un fichier php séparé?

J'imagine que la requête SQL ressemblerait à ceci:

select
*
from
LocalTable,
[OtherServerName].[OtherDB].[dbo].[OtherTable]

mais avec une logique de jointure

Réponses:

1 pour la réponse № 1

Vous ne pouvez pas joindre 2 fournisseurs de bases de données différents. Une requête est exécutée par un analyseur de requête spécifique du fournisseur.

Vous pouvez cependant faire la jointure en php, mais il faudrait vider beaucoup d’informations en php. Ça devrait aller pour les petits ensembles de données, pas pour les grands ...

Ce que vous souhaitez faire est de copier les données d'un fournisseur dans une table temporaire de l'autre, puis d'exécuter la jointure.

Pour les besoins de cet exemple, je vais utiliser PDO. Je vais prendre les données Oracle et les mettre dans mysql afin que je puisse utiliser une jointure sur ces données ...

$oracle_table_b = "select * from mytable";
$oracle_data = $pdo->fetchAll();
$stmt = $pdo_mysql->prepare("insert into mytemptable (mycols)");
foreach ($oracle_data as $row) {
$stmt->execute($row);
}

// Puis lance ta jointure