zoukankan      html  css  js  c++  java
  • 计算从A地出发到各个地方的路径及距离

    数据库环境:SQL SERVER 2005

    如题,现有bus表数据如下,dstart是起点,dend是终点,distance是两地的距离。

    求从A地出发到各个地方的距离。

    有经验的人一看,就知道题目关于树形查询的。SQL SERVER 2005数据库没有提供树形查询相关的函数,

    因此,可以通过CTE递归实现。

    题目比较简单,就不写什么分析思路了,直接看代码实现。

      1.建表,导入测试数据

    CREATE TABLE bus
        (
          dstart VARCHAR(4) ,
          dend VARCHAR(4) ,
          distance INT
        );
    INSERT  INTO bus
    VALUES  ( 'A', 'B', 120 );
    INSERT  INTO bus
    VALUES  ( 'B', 'C', 200 );
    INSERT  INTO bus
    VALUES  ( 'A', 'D', 150 );
    INSERT  INTO bus
    VALUES  ( 'D', 'M', 300 );
    INSERT  INTO bus
    VALUES  ( 'C', 'E', 180 );
    INSERT  INTO bus
    VALUES  ( 'F', 'M', 260 );
    View Code

      2.实现

    WITH    x0 ( dstart, dend, way, distance )
              AS ( SELECT   dstart ,
                            dend ,
                            CONVERT(VARCHAR (20), dstart + '-' + dend) AS way ,
                            distance
                   FROM     bus
                   WHERE    dstart = 'A'
                   UNION ALL
                   SELECT   bus .dstart ,
                            bus.dend ,
                            CONVERT(VARCHAR (20), x0. way + '-' + bus .dend) AS way ,--路径
                            bus.distance + x0.distance AS distance --距离
                   FROM     bus ,
                            x0
                   WHERE    bus .dstart = x0 .dend
                 )
        SELECT  way ,
                distance
        FROM    x0
    View Code

      3.效果

    看到这题目,刚好做下练手,并分享给大家。大家若有更好的实现方式,欢迎分享,一起学习。

  • 相关阅读:
    第三章 运算符与表达式
    python 第二章 对象与类型
    线段树区间染色+注意事项
    ACM-ICPC北京赛区2018重现赛 A题
    删除元组
    修改元组
    访问元组
    Python 元组
    Python List sort()方法
    hdu4501——小明系列故事——买年货(多维背包)
  • 原文地址:https://www.cnblogs.com/boss-he/p/4721783.html
Copyright © 2011-2022 走看看