Rechercher : dans
Par :

[MySQL] select sur deux bases

Dernière réponse le 28 avr 2009 à 05:07:14 chmanu, le 1 jui 2004 à 14:51:22 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [MySQL] select sur deux bases » dans :
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...

1

kalamit, le 1 jui 2004 à 14:54:58

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. :)

Répondre à kalamit

2

kalamit, le 1 jui 2004 à 14:59:07

Testé et approuvé, cela fonctionne. J'aurais pas dit... :)

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)

Répondre à kalamit

3

chmanu, le 1 jui 2004 à 15:00:44
  • +1

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

Répondre à chmanu

4

kalamit, le 1 jui 2004 à 15:06:09

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. :)

Répondre à kalamit

5

grofwa, le 1 jui 2004 à 15:08:53

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]

Répondre à grofwa

7

kalamit, le 1 jui 2004 à 15:16:08

Oui, deux mysql_connect... :)

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)

Répondre à kalamit

8

chmanu, le 1 jui 2004 à 15:16:26

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

Répondre à chmanu

9

grofwa, le 1 jui 2004 à 15:29:18

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]

Répondre à grofwa

10

chmanu, le 1 jui 2004 à 15:33:11

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

Répondre à chmanu

11

grofwa, le 1 jui 2004 à 15:37:56

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]

Répondre à grofwa

6

chmanu, le 1 jui 2004 à 15:14:09

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

Répondre à chmanu

12

sidibe, le 6 fév 2008 à 10:59:04

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 ?

Répondre à sidibe

13

linguistmail, le 4 nov 2008 à 11:25:18
  • +2

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

Répondre à linguistmail

14

Mac, le 30 déc 2008 à 18:45:54

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 ?

Répondre à Mac

15

Mac, le 30 déc 2008 à 20:28:44

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.

Répondre à Mac

16

http://anglais.linguistmail.com, le 28 avr 2009 à 04:58:44

$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]

Répondre à http://anglais.linguistmail.com

17

anglais.linguistmail.com, le 28 avr 2009 à 05:02:59

Désolé je me suis trompé :

name : $array1[$i][0]
address : $array1[$i][1]
city : $array2[$i][0]
telephone : $array2[$i][1]

Répondre à anglais.linguistmail.com

18

 anglais.linguistmail.com, le 28 avr 2009 à 05:07:14

$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]

Répondre à anglais.linguistmail.com