计算从A地出发到各个地方的路径及距离
数据库环境:SQL SERVER 2005
如题,现有bus表数据如下,dstart是起点,dend是终点,distance是两地的距离。
aaarticlea/png;base64,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" alt="" />
求从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 );
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
3.效果
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAABgCAIAAABNOn3XAAAFVUlEQVR4nO1czWrjMBCeh2oW7HcJoQf7QQoLPZk8RWHZ7MmQZ+ih0KshL9BLwN3rGrwHy7Ikj/yT2tZMOh+iOIpIZvR5RvJ8UeH3n1wa2QaVgY/PfxVbsDbeB6GHNIQe0hB6SON70FNkUZQVGxqzFL4TPShJtJn7TvTMfYsABunJE4AkV1f6IsqKKk9AI8mNgXrE5kDoKbJIW2lEj+6OslxdRllRuU41zGWJ0VNV5ijV033L8n4PR0/rUJ6YFhf9IUUWuURuDcz41pTmllHGtxY27w9kvCKLTA6irDA/0/5QY8ySGElujSt5EmV5FqmrovUdzJtGOR2MnZ7x5mRZa48yvXPEHIZFW+8T7G8BEwvzM7b25EmUZUlz07UcWQlMW5wnkOSavu0xmR4FlRG6zp5TU+lZ8X4c3RrkSXtL6AxnxUjnVJ6skn6nYiC5FVnURYN6Uakpz016vHlrMLmZi9DCVI3SY2fw9tutmG59CLUpaDC0NYgi8943tgZ6Q6AWVssphJ4K2Rp0PVtvDWYh3LJTVRXzpwIfFqIncGKrKqGHOFgb74PQQxrw8flPGtkGpQ0AYP33zmAlt7IsP65/mbayLOv7AkIPAASf6NsaAISez4Uh0UMaEj2kMTN6fj0C/Hh66/W/PT90xRBsAInoOaeQno0XCm1fvyc45kXPywH2h8eHn+8YPY8v+nr3/Eorei7H2Jr4yzF2Ly/HOD5eVI+6Co5Z0fP+tHt8uZ72/dk36bme9t013ejRUGwYb+LjQmBO9Lw9PxxOH9f3p10vfVGPngbotKvoMUOGTvjMiJ7Xnz/2v9SFm98Yrj0NLscY4uOl5kOPJ3ren3aGYrt7fr3+fTkAAMDhRCS5zY0ezU3NiB7ceZXZNFV2iFj0YNmPXvSY3Dhv8lt7nITm5jdn7aEfPefU3T5z3rmd9jAQLs7aA80SRTl6ukccAAAVReyfe4i3b181oN2k5ka6SfSQbvcZPaZ0KtFDCmVZIgIwBU1alOwGbnILfcfcDtbGoxB6SEPoIQ2hhzRm0nNOAbB6lFYjg9ZExugxS51mWUd5xKOoMzD6nEKapgg/VhXRUIq3hd94V8xGqtJcSqL+wZdjnJ7rM8KP41EgB2dET99CLoKCd2zDDjr3bl8YB+fRY6c2NnKcb6hiB7Xe7Qrj4Ax6zil0qYzVbw08I+3VPz5e9FrqOFfXDKLHQGM7c3p07KgXtv3s1h4DzH5IhY4bmX/qO7cG3bQbJrZpjvPOrUvVCg4F/J57uqcc7Rj75x7iYG08CqGHNIQe0hB6SKPsi9mhTbodrI1HUaJitoAOJLnRhdBDGkIPaQg9pDGTnkliNq6mblDyGTBeF2wQNZvXyeyB0UNitl+ItA869U/WLAav8V3JUJXdGJ/M9g8eFLO9Mv523k5Ibn4pkbWgUNdjYrYveja8F8fpQbSOO1FLx8Rs39pDhp7GRoQcXiezPSPHxOxeclPvxjEReuq6dsKH5clsfOComG15HSa7TdlYa2u4nsxGx42L2dZvlLz/PiDIzg3Zp/E9mY0N+6qYTee5xz2EjXYSiR2pGhCH0EMaQg9pCD2kUYqYTRmliNnEIcmNLoQe0hB6SEPoIY2Z9KwhZtsFoa+UVPzGTzqHzb6os4qYvVwFcpCesQIo55Jog3XE7A3omXIOm7WgUNeridnb0GOntr74xlyOW0/Mdtee229cr/ETzmFzp2dhMdt/qvtLzoyO8ZHBnJ71xOwQ9Nzb2rOimL0+PZPOYXPeua0pZveee26em4HomXIOm/1zD3GwNh6F0EMaQg9pCD2kUYqYTRmliNmUUdf1fxxTT/9YzhOTAAAAAElFTkSuQmCC" alt="" />
看到这题目,刚好做下练手,并分享给大家。大家若有更好的实现方式,欢迎分享,一起学习。
计算从A地出发到各个地方的路径及距离的更多相关文章
- 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然
from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...
- 巧妙地用二叉树完成算式计算算法<计算器,二叉树,C++,独辟蹊径>
#01.引言,我们知道算式计算的问题是栈里面一个非常经典的题目.但是用栈来实现是一个非常麻烦的过程,第一要解决算式判断,是否为符合规则的算式,第二要由中最表达式转化为后缀表达式.这两个部分是栈实现计算 ...
- 1549: Navigition Problem (几何计算+模拟 细节较多)
1549: Navigition Problem Submit Page Summary Time Limit: 1 Sec Memory Limit: 256 Mb Su ...
- word2vec词向量训练及中文文本类似度计算
本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...
- 聊聊GIS中的坐标系|再版 详细定义、计算及高程系统
本篇讲坐标系统的详细定义,有关坐标系的变换公式,以及简单说说高程坐标系统. 本文约6000字,阅读时间建议45分钟.硬内容比较多,如有疏漏错误请指出,建议有兴趣的朋友进一步阅读. 作者:博客园/B站/ ...
- Redis系列9:Geo 类型赋能亿级地图位置计算
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...
- PHP版根据经纬度和半径计算出经纬度的范围
百度地图提供了范围搜索的功能,但是它使用的是百度自己的数据,但是有时候我们需要使用自己的数据,显示在地图上.比如给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r),搜索指定范围内的数 ...
- 计算N个点和M个点之间的距离
KNN中,训练样本有train_count个,测试样本有test_count个,每个样本有attr_count个属性.现在需要快速计算test_count个测试样本和train_count个样本之间的 ...
- php计算两个坐标(经度,纬度)之间距离的方法
本文实例讲述了php计算两个坐标(经度,纬度)之间距离的方法.分享给大家供大家参考.具体如下: 这里使用php计算两个坐标(经度,纬度)之间的距离,返回结果为米或者千米 function distan ...
随机推荐
- Java基础(二十三)GUI图形界面编程(Java基础完)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- 曾经记录——asp.net中的点滴
“<%#....%>”这是数据绑定,里面可以调用C#的方法,比如在数据控件里执行绑定某个字段<%# Eval("Name")%>这样帮顶一个Name的字段. ...
- UVA 10256 The Great Divide (凸包,多边形的位置关系)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34148 [思路] 凸包 求出红蓝点的凸包,剩下的问题就是判断两个凸 ...
- JavaScript高级程序设计61.pdf
JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- HTML5 简单画图,切片,变形
本人是在校学生,由于这段时间不知道怎么回事,心情比较无聊没有事干,所以利用这段时间学一下HTML5,发博客的目的是为了以后可以查询,也希望各位大神能够指导像我们这样的菜鸟,告别菜鸟的时段 我学东西时候 ...
- Web资源文件的加载
一.关于页面跳转的一下几种方法: package com.gqx.load; import java.io.IOException; import java.io.PrintWriter; impor ...
- thymelef 布局 fragment
需求:布局页面, 把首页分成四个页面: header footer ,content ,aside ,从githua 下载的原型, 所有内容是在一起的,这里拆分, 重用, 减少代码量 做法: 新建页 ...
- LRU算法&&LeetCode解题报告
题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- LINUX kernel笔记系列 :IO块参数 图
Linux下,I/O处理的层次可分为4层: 系统调用层,应用程序使用系统调用指定读写哪个文件,文件偏移是多少 文件系统层,写文件时将用户态中的buffer拷贝到内核态下,并由cache缓存该部分数 ...