IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Jointure dynamique entre deux tables dans des bases différentes


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Points : 47
    Points
    47
    Par défaut Jointure dynamique entre deux tables dans des bases différentes
    Bonjour,

    J'aimerais savoir s'il est possible de faire une jointure dynamiquement sur le nom de la base de données.

    Je m'explique:

    Une table COLLECTE_GENERALE contient:

    ID|CLIENT|DATA
    1|1|aze
    2|3|qsd
    3|18|wxc
    4|10|gfh

    ID correspond au numéro de la base client.
    Par exemple la base du client s'appellera CLIENT_ID; ie: CLIENT_1 ou CLIENT_2
    Et dans chaque base client il y a une "sous table" COLLECTE qui renseigne les données spécifiques à ce client

    Je voudrais faire donc une jointure entre COLLECTE_GENERALE et les sous tables COLLECTE, en une seule requête et en joignant sur COLLECTE_GENERALE.CLIENT

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 289
    Points
    2 289
    Par défaut
    Bonsoir

    Sauf erreur de ma part, je crois que c'est le principe de la liaison en base de données relationnelle.
    La notion de dynamique me semble superflu.

    Pierre

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 304
    Points
    304
    Par défaut
    Bonjour,

    Pour joindre des tables qui proviennent de schémas différents, il suffit de préciser les noms de schémas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM schema1.nomtable
       INNER JOIN schema2.nomtable
            ON ...

    Ensuite, pour générer un nom du schéma comme CLIENT_1, je pense que le mieux serait de passer par une procédure dans laquelle vous concatènerez (...'CLIENT_'+1...) afin d'obtenir le texte de la requête avant de l'exécuter. Voici rapidement un début de réponse à compléter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE test()
    BEGIN
      SET @S = CONCAT("SELECT * FROM CLIENT_", SELECT ID FROM COLLECTE_GENERALE WHERE...,".COLLECTE", ...);
      PREPARE STMT FROM @S;
      EXECUTE STMT;
    END

Discussions similaires

  1. Enregister des données sur deux tables dans une base Access
    Par aziz-be dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/09/2012, 12h46
  2. Réponses: 1
    Dernier message: 26/04/2012, 15h05
  3. Jointure entre 2 tables dans 2 bases differentes ?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/10/2011, 18h43
  4. Réponses: 11
    Dernier message: 30/08/2010, 18h24
  5. Réponses: 1
    Dernier message: 27/06/2006, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo