【发布时间】:2010-11-24 22:15:03
【问题描述】:
我需要合并两个 SELECT 语句。
我的数据库中有两个表,其中表 A 由两个字段组成;类型和计数器。表 B 由两个字段组成;来源和目的地。
表A有三个项目; { 1, 5000 }、{ 2, 10000 } 和 { 3, 15000 }。 ({类型,计数器}) 表 B 有两个项目; { 5000, 10000 } 和 { 10000, 150000 }。 ({来源,目的地})也就是说,表 B 的值由表 A 中的数据组成。
我可用于查询的数据是表 A 中的类型(1、2 和 3)。
对数据库的查询(我正在查询的那个)的最终结果应该是一项; { 5000, 10000, 15000 },其中列应分别为 {Source, Middle, Destination}。但是,我无法创建可以以这种格式显示的查询。
我可以使用 INNER JOIN 获取数据,其中结果显示为两个项目; { 5000, 10000 } 和 { 10000, 15000 }。 (不仅仅是表 B 的内容,也就是说,如果这些表还包含其他项目。)
(两个表中的项目显然比我上面显示的要多得多。)
那么,如何编写 SQL 查询以使我的结果显示为 { 5000, 10000, 15000 }(具有适当的列名)?
【问题讨论】:
-
你能贴出你试过的select语句吗?
-
只有中间吗?或者你的“路径”可以去 5000 -> 10000 -> 15000 -> 20000 -> 25000?在这种情况下,您的列会是什么样子?
-
中间有一个。以下是我的(不正确的选择); SELECT * FROM TableB INNER JOIN TableA TD1 ON TableB.SourceType = TB1.Type INNER JOIN TableA TD2 ON TableB.DestinationType = TD2.Type INNER JOIN TableA TD3 ON TableB.DestinationType = TD3.Type INNER JOIN TableA TD4 ON TableB.DestinationType = TD4 .Type WHERE TD1.Counter=5000 AND TD2.Counter=10000 OR TD1.Counter=10000 AND TD3.counter = 15000
-
我认为您需要更具体地了解您要查找的内容。我不明白你真正想要达到的目标。你显然不只是想加入表格。您是否要检索最低的来源、最高的目的地和中间的值?
-
值可以是任何值,只是每个数字都是唯一的。