2010-06-13 8 views
1

J'ai une table que je suis pour la valeur 43 requêtes dans le deuxième champ et je retourne la valeur du troisième champSélection de 2 tables en une seule requête

SELECT t1_field3 FROM table1 WHERE t1_field2=43 

this returns 19, 39,73 

t1_id t1_field2 t1_field3 
----- --------- --------- 
1   43  19////    
2   43  39////    
3   43  73//// 
4   73  43 
5   13  40 

Je requête séparément une deuxième table pour plus d'informations

SELECT * FROM table2 WHERE t2_id=t1_field3 

t2_id t2_field2 t2_field3 
----- --------- --------- 
19  value19.2 value19.3 
39  value39.2 value39.3 
73  value73.2 value73.3 

Y a-t-il un moyen de combiner à la fois table1 et table2 dans la même requête?

Répondre

1
select * from table2 
where t2_id in (select t1_field3 from table1 where t1_field2=43) 
2

Vous décrivez un JOIN. Dans ce cas, vous n'avez pas besoin d'utiliser explicitement le mot-clé JOIN bien, vous pouvez simplement faire ceci:

SELECT table1.t1_field3, table2.* FROM table1, table2 WHERE table1.t1_field2=43 AND table2.t2_id = table1.t1_field3 

Il serait sans doute utile d'en apprendre davantage sur les différents types de jointures à un moment donné; Coding Horror a un good post sujet

1

Il y a un moyen d'exprimer la rejoindre directement aussi bien comme ceci:

select table1.t1_field3, table2.* 
    from table1 
    join table2 on table1.t1_field3 = table2.t2_id 
where table1.t1_field2 = 43; 
Questions connexes