[MySQL] select sur deux bases

Résolu/Fermé
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 - 1 juil. 2004 à 14:51
 Romu - 5 févr. 2010 à 15:10
Bonjour,

J ai fait de multiples recherches sur internet et j ai toujours pas trouvé réponse à cette question :
peut on (si oui comment) faire une requete type select sur deux bases MySQL différentes ?
en gros, un truc du genre :

select * from db1.tableA, db2.table2 where db1.tableA.chpX = db2.tableB.chpY


Ces deux bases sont sur le meme serveur

Merci pour vos réponses
Chmanu
A voir également:

8 réponses

linguistmail
4 nov. 2008 à 11:25
Bonjour

J'ai résolu le problème de cette manière :

$db1= "nombasededonnees1";
$db2= "nombasededonnees2";

$handle_db1 = mysql_connect($host, $user, $pass);
$handle_db2 = mysql_connect($host, $user, $pass, TRUE);

mysql_select_db($db1, $handle_db1);
mysql_select_db($db2, $handle_db2);

$query = "select * from test";
$which = $handle_db1;
mysql_query($query, $which);

$query = "select * from test";
$which = $handle_db2;
mysql_query($query, $which);

Et ça marche! C'est le TRUE dans le 2ème connect qui règle le problème. Si je me souviens bien, il faut MySql 5.

P@tri.ck
http://anglais.linguistmail.com/index.php
4
je veux faire la même chose que toi :

<?
$db1 = "prestige_app";
$db2 = "cobra_app";

$cnx1 = mysql_connect("host","login","pass");
$cnx2 = mysql_connect("host","login","pass", TRUE);

mysql_select_db($db1, $cnx1);
mysql_select_db($db2, $cnx2);

$query = "SELECT ID FROM inventaire";

$which = $cnx1;
mysql_query($query, $which) or die mysql_error($cnx1);

$which = $cnx2;
mysql_query($query, $which) or die mysql_error($cnx2);
?>

cependant cela me donne : Parse error: syntax error, unexpected T_STRING in /homepages/40/d180087966/htdocs/test2base.php on line 17

Deplus comment as tu fait pour afficher le résultat dans un table ?
0
Semblerais que je n'ai plus l'erreur. c,est déja ca de fait hehehe


Mais la je me demende sérieusement comment afficher cela en un seul tableau html.
0
http://anglais.linguistmail.com > Mac
28 avril 2009 à 04:58
$query1= "SELECT name, address FROM $table1";
$query2= "SELECT city, telephone FROM $table2";

$result1= mysql_query($query1, $handle_db1);
$result2= mysql_query($query2, $handle_db2);

while ($row1= mysql_fetch_array($result1)) $array1[]= $row1;
while ($row2= mysql_fetch_array($result2)) $array2[]= $row2;

name : $result1[$i][0]
address : $result1[$i][1]
city : $result2[$i][0]
telephone : $result2[$i][1]
0
anglais.linguistmail.com > http://anglais.linguistmail.com
28 avril 2009 à 05:02
Désolé je me suis trompé :

name : $array1[$i][0]
address : $array1[$i][1]
city : $array2[$i][0]
telephone : $array2[$i][1]
0
anglais.linguistmail.com > Mac
28 avril 2009 à 05:07
$query1= "SELECT name, address FROM $table1";
$query2= "SELECT city, telephone FROM $table2";

$result1= mysql_query($query1, $handle_db1);
$result2= mysql_query($query2, $handle_db2);

while ($row1= mysql_fetch_array($result1)) $array1[]= $row1;
while ($row2= mysql_fetch_array($result2)) $array2[]= $row2;

name : $array1[$i][0]
address : $array1[$i][1]
city : $array2[$i][0]
telephone : $array2[$i][1]
0
Utilisateur anonyme
1 juil. 2004 à 14:59
Testé et approuvé, cela fonctionne. J'aurais pas dit... :)

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
1
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 28
1 juil. 2004 à 15:00
Bah merde alors, j ai essayé, ca ne marche pas !!

Faut dire, je ne suis pas root de la base. Quels doivent etre les droits dans ce cas ?

Merci, en tout cas, ca m avance, j irai voir l admin pour augmenter mes droits.


Chmanu
1
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 28
1 juil. 2004 à 15:14
Non, c est ok.
En fait tout à l heure j ai du essayé mais la connexion n etait pas ouverte sur les deux bases.
Et y a un truc qui m a fouttu dedans aussi, c'est que le client que j utilise (MySQL Control Center) n'active pas la complétion pour ce genre de requetes.

En tout cas merci.


Chmanu
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je cherche plutôt à faire une requête sur 2 serveurs différents, genre select * from serveur1.base1.table1 , serveur2.base2.table2 .. . .. .
Quelqu'un aurait-il une solution ?
1
Salut,

Je viens de tomber sur ton post et je cherche moi aussi a pointer une seule requete mysql sur deux bases sur des serveurs différents

as tu trouvé une solution

D'avance Merci

Romu
0
Utilisateur anonyme
1 juil. 2004 à 14:54
C'est pour le moins original. T'as essayé ?
Je vais tester. J'te dirai ca après.

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
Utilisateur anonyme
1 juil. 2004 à 15:06
Ah ouais, moi j'etais en root, ca doit etre une question de droit effectivement...
Par contre, je ne saurais pas te dire lesquels il te faut. A vue de pif, il faudrait que tu ait les meme sur les deux bases avec le meme user.

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
1 juil. 2004 à 15:08
Bien vu !

Question subsidiaire : Comment le faire en PHP ?
Deux mysql_connect ?

:-)

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
Utilisateur anonyme
1 juil. 2004 à 15:16
Oui, deux mysql_connect... :)

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 28
1 juil. 2004 à 15:16
A priori, oui, au vu de ce que je viens de poster (en dessous) :
mysql_connect(db1)
mysql_connect(db2)

$sql = "la_requete"
... // traitement habituel


Chmanu
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
1 juil. 2004 à 15:29
Ben ouais, c'est tout con !
J'avais une fois lu untruc sur mysql_connect, mais je viens de relire la doc, il n'y a pas de raison que ça ne marche pas.

Micha.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 28
1 juil. 2004 à 15:33
T as trouvé ça dans quelle rubrique de la doc ?
Parce que moi, j ai passé un bout de temps à l'chercher !!
(a moins que tu ne parles de la doc PHP)

Chmanu
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
1 juil. 2004 à 15:37
Oui, dans la doc PHP !
Pour les deux bases, j'avais trouvé ça quelque part sur le net, parce que MySQL ne le documente pas (pas vu en tout cas).

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0