2013-06-26 5 views
0

J'ai 3 tables, t1, t2 et t3. ti et t2 sont dans les bases de données D1. Mais la table t3 est contenue dans les deux bases de données D1 et D2 comme quelques 5 enregistrements sont dans D1, t3 et reste 5 dans D2.t3.Requête avec une table de 2 bases de données

le tableau complet t3 est en fait combiné des enregistrements de la même table (c.-à-t3) de D1 ET D2

la requête doit être comme;

select t1.*,t2.* from D1.t1,D1.t2 where t1.aid=t3.cid and t3.id IN(1,2,4) and t1.aid=t2.bid 

le problème est de savoir comment puis-je fournir « t3.cid et t3.id IN (1,2,4) » dans le QUERY car ils sont de différentes bases de données

+0

serveur de base de données différent/schéma de base de données différent? sonne le dernier, non? – Raptor

+0

préfixe la table avec le nom de base de données 'DATABASE.table.field' – DevZer0

+0

même serveur mais différentes bases de données –

Répondre

0

bases de données MySQL sont la plupart du temps pour l'organisation et permission sharding. Il y a très peu de tables jointes de frais généraux à partir de plusieurs bases de données dans une seule requête.

SELECT * 
    FROM D1.t1 as d1t1 
    INNER JOIN D1.t2 as d1t2 ON d1t1.aid = d1t2.bid 
    INNER JOIN D2.t3 as d2t3 ON <your join condition here> 
    INNER JOIN D1.t3 as d1t3 ON <another join condition> 
WHERE 
    d1t3.id IN (1,2,3) 

Vous n'avez pas spécifié la condition de jointure dans la question d'origine, mais cette requête devrait vous aider à démarrer.


Après avoir lu les commentaires, ce que vous avez besoin est un UNION:

(SELECT t3.* FROM D1.t3) UNION (SELCT t3.* FROM D2.t3) 

Vous devrez répéter les conditions de jointure ci-dessus dans chaque clause UNION.

Vous devriez probablement regarder votre structure de base de données, cependant. L'UNION vous donnera les données dont vous avez besoin, mais au détriment des performances. Si vous avez deux tables avec des structures identiques, vous devriez voir s'il existe un moyen de migrer vos données dans une seule table.

+0

mais je dois utiliser D1.T3 AUSSI à droite –

+0

Vous pouvez ajouter cela comme une autre clause INNER JOIN - voir éditions – dethtron5000

+0

Merci, mais je veux juste vous assurer que le la table t3 dans D1 et D2 ne sont pas en réalité 2 tables différentes, certains enregistrements sont dans D1.t3 et reposent dans D2.t3, les deux sont de même structure. –

Questions connexes