2010-07-15 5 views
2

J'ai deux tables tbl_a et tbl_b et leurs champs sontTable de jointure SQL avec deux mots clés 'ON'?

tbl_a 
----- 
a_id a_name a_surname a_c_id a_d_id 

tbl_b 
----- 
b_id b_name b_phone b_c_id b_d_id 

Je veux rejoindre ces deux tables comme ceci:

select *from tbl_a join tbl_b on tbl_a.a_c_id=tbl_b.b_c_id AND tbl_a.a_d_id=tbl_b.b_d_id where tbl_a.id>15; 

Comme vous pouvez le voir, je veux utiliser deux clés pour le mot clé ON ,Est-ce qu'il y a un moyen de faire ça? Merci d'avance ...

Répondre

3

Votre requête est juste il n'y a pas besoin de mettre supplémentaire sur mot-clé ET mot-clé faire un travail de se joindre à deux colonnes différentes. Il suffit de mettre le support pour comprendre correctement.

select *from tbl_a join tbl_b on 
(
    tbl_a.a_c_id=tbl_b.b_c_id 
    AND 
    tbl_a.a_d_id=tbl_b.b_d_id 
) 
where tbl_a.id>15; 
+0

Merci ça marche! Je veux demander quelque chose d'autre, en tbl_a il y a essentiellement autour de cent dossiers, mais dans tbl_b là cent mille dossiers et il faut près de 120 secondes pour exécuter it.Is normal? J'utilise un serveur dédié –

+0

vous êtes les bienvenus –

+0

je l'ai résolu il y avait une erreur logique donc il provoque une faible performance. Merci encore –

0

Le serveur Sql le permet. Je peux parler pour d'autres implémentations.

1

La façon dont vous le mettez devrait fonctionner correctement.

Dans MySQL, vous pouvez définir plusieurs contraintes de jointure en utilisant AND.

0

cela fonctionne bien, mais alias utilisation au lieu de long tablename

select * from tbl_a a 
     join tbl_b b on a.a_c_id=b.b_c_id AND a.a_d_id=b.b_d_id 
     where a.id>15; 
Questions connexes