2009-09-02 150 views
0

我需要合并两个SELECT语句。合并两个SQL SELECT语句

我的数据库中有两个表,其中表A由两个字段组成;类型和计数器。表B由两个字段组成;来源和目的地。

 
Table A has three items; 
        { 1, 5000 }, { 2, 10000 } and { 3, 15000 }. ({Type, Counter}) 
Table B has two items; 
        { 5000, 10000 } and { 10000, 150000 }. ({Source, Destination}) 

即,表B的值从表A

数据I具有可用于我的查询由数据都在表A型(1,2和3)。

查询(我以后的那个)的最终结果应该是一个项目; {5000,10000,15000},其中列分别应为{Source,Middle,Destination}。但是,我一直无法创建可以以这种格式显示的查询。

我能够使用INNER JOIN获取数据,其中结果显示为两个项目; {5000,10000}和{10000,15000}。 (不是简单的说,如果表将包括其他项目,以及表B中的内容。)

(有明显的两个表中远远更多的项目比我上面显示。)

所以,如何编写SQL查询以使结果显示为{5000,10000,15000}(具有适当的列名称)?

+0

你可以发布你已经尝试在SELECT语句? – kemiller2002 2009-09-02 11:32:45

+0

是否只有一个中间?或者你的“路径”是5000 - > 10000 - > 15000 - > 20000 - > 25000?在这种情况下,你的专栏会是什么样子? – butterchicken 2009-09-02 11:34:26

+0

有一个中间。 以下是我的(不正确的选择); SELECT * FROM 表B INNER JOIN 表A TD1 ON TableB.SourceType = TB1.Type INNER JOIN 表A TD2 ON TableB.DestinationType = TD2.Type INNER JOIN 表A TD3 ON TableB.DestinationType = TD3.Type INNER JOIN 表A TD4 ON TableB.DestinationType = TD4.Type WHERE TD1.Counter = 5000 AND TD2.Counter = 10000 OR TD1.Counter = 10000 AND TD3.counter = 15000 – 2009-09-02 11:42:31

回答

2

从你的问题,你没有任何使用或需要表A - 你只是简单地加入表B自己Source =目的地。

您的查询应该是

SELECT a.Source, a.Destination, b.Destination 
FROM [Table B] as a INNER JOIN [Table B] as b 
ON a.Destination = b.Source 
+0

这似乎已经做到了。谢谢。我想我是盲目的,我需要有任何输入,但显然不是。 – 2009-09-02 11:48:43

+0

我发布了一个正确的答案,你为什么投票呢?我在看到你之前发布了它,并且我更喜欢我的。 – 2009-09-02 12:20:27