Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL。用于聚合某些相关字段的查询_Sql - Fatal编程技术网

SQL。用于聚合某些相关字段的查询

SQL。用于聚合某些相关字段的查询,sql,Sql,很抱歉标题含糊不清,我不知道该怎么说 假设您有一个表,例如列车上的下一个停车位表以及此站与下一站之间的距离: Stop NextStop Distance ------------------------------------ Middletown Bloomsbury 101 Bloomsbury Shanksville 36 Shanksville New City 53 New City Washington

很抱歉标题含糊不清,我不知道该怎么说

假设您有一个表,例如列车上的下一个停车位表以及此站与下一站之间的距离:

Stop         NextStop       Distance
------------------------------------
Middletown   Bloomsbury     101
Bloomsbury   Shanksville    36
Shanksville  New City       53
New City     Washington     339
Washington   Andover        48
问题是确定站点X和Y之间的距离。例如,米德尔顿和尚克斯维尔之间的距离为101+36=137

有没有一种方法可以通过一个查询来实现这一点?(理想情况下,我正在寻找一种迭代遍历Stops列的方法,方法是使用前一行的NextStop字段作为下一行的键,然后将它们的距离收集到一列中。)


谢谢

在Oracle中,我认为类似的方法可能会奏效:

Select sum(distance)
from train_stops
start with stop = 'Middletown'
connect by stop = prior  nextstop;

谢谢你知道有没有通用的SQL解决方案吗?@Jake:不知道。您使用的是什么数据库管理系统?Oracle并不是唯一一个支持递归查询的工具,但不同的工具的语法可能略有不同。我并不局限于特定的实现。我的意思是,我试图解决这个问题,但对每个距离段进行多个查询似乎有些过分。也许我的单一查询方法是不正确的。@Jake:有关一般解决方案,请参见此处Portman的答案: