[MySQL] select sur deux bases

Résolu
chmanu Messages postés 166 Statut Membre -  
 Romu -
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

8 réponses

  1. linguistmail
     
    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
    1. Mac
       
      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
      1. Mac > Mac
         
        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
      2. http://anglais.linguistmail.com > Mac
         
        $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
      3. anglais.linguistmail.com > http://anglais.linguistmail.com
         
        Désolé je me suis trompé :

        name : $array1[$i][0]
        address : $array1[$i][1]
        city : $array2[$i][0]
        telephone : $array2[$i][1]
        0
      4. anglais.linguistmail.com > Mac
         
        $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
  2. kalamit
     
    Testé et approuvé, cela fonctionne. J'aurais pas dit... :)

    Kalamit,
    Vol au dessus d'un nid de Pika-baffe. :)
    1
  3. chmanu Messages postés 166 Statut Membre 28
     
    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
  4. chmanu Messages postés 166 Statut Membre 28
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sidibe
     
    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
    1. Romu
       
      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
  7. kalamit
     
    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
  8. kalamit
     
    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
  9. grofwa Messages postés 440 Statut Membre 479
     
    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
    1. kalamit
       
      Oui, deux mysql_connect... :)

      Kalamit,
      Vol au dessus d'un nid de Pika-baffe. :)
      0
    2. chmanu Messages postés 166 Statut Membre 28
       
      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
    3. grofwa Messages postés 440 Statut Membre 479
       
      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
    4. chmanu Messages postés 166 Statut Membre 28
       
      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
    5. grofwa Messages postés 440 Statut Membre 479
       
      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