2010-06-13 78 views
1

我有我查询在所述第二域值43的表和我返回第三字段的值从2个表中选择在一个单一的查询

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 

然后我分别查询第二表获取更多信息

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 

有没有一种方法可以在同一个查询中同时使用table1和table2?

回答

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

您正在描述一个JOIN。在这种情况下,你不需要明确使用JOIN关键字虽然,你可以这样做:

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

或许,这将有助于了解不同类型的在某些时候加入;编码恐怖拥有good post

1

有表达直接加入,以及像这样的方式:

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