2011-11-28 15 views
2

我在MySQL的初学者,我有一个困难时期试图找出如何解决这个问题,选择多列。比方说,这些都是表:从多个表

Table 1  ||   Table 2 
------------- || ------------------- 
| dt1 | dt2 | || | dt3 | dt4 | dt5 | 
------------- || ------------------- 
| 1 | abc | || | 3 | wsx | 123 | 
| 7 | asd | || | 3 | qax | 456 | 
| 19 | zxc | || | 4 | rfv | 789 | 
------------- || ------------------- 

我想要做的是有结果一个表列“DT2”,“DT4”和“DT5”,并以只有一个入口。为此,我将应用于每个表的查询甚至可能必须限制结果。为了让我从每个表所需的结果separetelly我会做到以下几点:

SELECT `dt2` FROM `table1` WHERE `dt1`=7; 

SELECT `dt4`,`dt5` FROM `table2` WHERE `dt3`=3 LIMIT 0,1; 

还有一两件事,我不想使用子查询为每个列,因为在我试图解决的真实事情,我打电话给每个表格5或6列。

只是要明确,我想要得到的是这样的:

------------------- 
| dt2 | dt4 | dt5 | 
------------------- 
| asd | qax | 456 | 
------------------- 
+1

现在缺少的是在记录之间的关系两张桌子。有一个吗?换句话说,对于表1中的给定记录,表2中的记录应该与哪一条记录配对? –

+0

正如我所说,每张表只有一个结果,最后只有一个结果。所以配对的是我在每个表格中查询的答案。 – hbmuller

+0

这没有什么大的意义。只需通过两个查询查询两个表,然后使用包装语言(例如PHP)自行构建结果。其他任何事情都像用左手刮你的右耳。 – TMS

回答

8
SELECT a.dt2, b.dt4, b.dt5 
FROM table1 a, table2 b 
WHERE a.dt2 = 'asd' 
LIMIT 0,1; 
+0

但是第二个表中的搜索呢? – hbmuller

+0

这个查询使用2个表格,table1和table2 ....如果这个查询有问题,请更加特别。 – Ben

0

Ben的回答解决了我类似的问题。

SELECT t1.dt2,t2.dt4,t2.dt5,t2.dt3#获取DT3从表2

数据FROM表1 T1,T2表2

WHERE t1.dt2 = 'ASD' 和T2 .dt4 ='qax'AND t2.dt5 = 456

| asd | qax | 456 | 3 |

'3'是我通过查询表中的'qax',456数据所需的数据,否则您正在指定从列中返回哪些数据。

我只有2个表在我的实例中进行查询,所以我可以放弃使用的AND表达式,它可能不是最佳实践,并且最有可能有更好的方法来匹配来自多个表的数据。

编辑:我刚刚意识到这个问题是5岁..我希望你现在已经达到你想要的。

1
SELECT a.dt2, b.dt4, b.dt5 

FROM表1一个,表2 b WHERE a.dt2 = 'ASD' LIMIT 0,1;

Ben的回答是不错的,你可以通过用逗号将它们分开使用多个表(,),但如果有这些表之间的关系,那么你应该使用一些Sub QueryJOIN