计算从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 ,distanceFROM     busWHERE    dstart = 'A'UNION ALLSELECT   bus .dstart ,bus.dend ,CONVERT(VARCHAR (20), x0. way + '-' + bus .dend) AS way ,--路径bus.distance + x0.distance AS distance --距离FROM     bus ,x0WHERE    bus .dstart = x0 .dend)SELECT  way ,distanceFROM    x0
View Code

  3.效果

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

转载于:https://www.cnblogs.com/boss-he/p/4721783.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派使用STEP6:安装git

git用于创建和管理代码仓,是一个很优秀的版本控制工具。linux/树莓派安装非常简单。 1、sudo apt-get install git-core

cJSON 使用笔记

缘 起 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据…

使用虚拟路径时出现404问题

今天在做一个小项目的时候使用了如下路径 web.xml如下: 一切配置都正确,可还是404 在折腾了半天之后发现浏览器的地址栏没有项目名!也就是说连接到项目外面去了,果断404。然后才记得虚拟路径前面的“/”和通常用的“../”具有同样…

树莓派使用STEP7:安装wiringPi硬件外设驱动C库

基于C/C开发树莓派外设,比较好的一种库是wiringPi,这里记录安装的流程和步骤。 一、在线安装 1、控制命令行 :git clone git://git.drogon.net/wiringPi 克隆git代码仓库 2、控制命令行: git pull origin 拉取最新的wiringPi…

STM32的I2C主从机通信

最近一段时间在做I2C通信协议,需要在两块STM32之间做I2C通信,定的是主机用IO口模拟,从机用的是STM32的硬件I2C,我的项目要求是需要主从机之间能够进行一串数据收发而不出错,实验时在主机方面,利用IO口模拟主…

css垂直居中那点事

这是我技术博客生涯的第一篇文章,想想还是有点小鸡冻。。。菜鸟的征程现在要开始了 学习css的时候经常被各种问题纠结到不要不要的,没办法,只能写写博客帮助整理一下自己的思绪和帮助一下和我遇到同样问题的小伙伴们 不知道各位学习css的小伙…

Windows常用shell命令大全

From: http://blog.csdn.net/yunzhongfeiniao/article/details/6564577 基于鼠标操作的后果就是OS界面外观发生改变,就得多花学习成本。更主要的是基于界面引导Path与命令行直达速度是难以比拟的。另外Geek很大一部分是键盘控,而非鼠标流的。 整理Wind…

div模拟select/option解决兼容性问题及增加可拓展性

个人博客: http://mcchen.club 想到做这个模拟的原因是之前使用select>option标签的时候发现没有办法操控option的很多样式,比如line-height等,还会由此导致在IE8及以下版本浏览器中的各种问题。 这个模拟思路很简单,也很清晰&…

Linux Socket网络通信示例

记录一下Linux 网络通信编程示例&#xff0c;主要用内网穿透和网络调试助手进行调试。 1、源文件&#xff1a; #include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <netinet/in.h> #incldue <string.h> //bze…

stm32+lwip(四):网页服务器测试

ST官方有lwip的例程&#xff0c;下载地址如下&#xff1a; https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32070.html 本文例子参考ST官方给出的例…

Linux 用C/C++创建新文件并写入内容

1、需求 在Linux环境下用C编写一个函数&#xff0c;用于记录运行日志&#xff0c;要求只存在一个同名文件&#xff0c;每次记录前清除已有的信息。 2、思路 需要完成的是&#xff1a; &#xff08;1&#xff09;查找&#xff08;access&#xff09;是否该文件存在&#xff…

如何将Eclipse中的开源项目使用到Android Studio中

近几日&#xff0c;笔者用到了一些开源项目&#xff0c;比如著名的PTR项目。但是在使用的过程中&#xff0c;遇到了一些问题。 这个开源库是在Eclipse上面写的&#xff0c;我们现在开发用的是Android stuido。 两种软件的项目结构是不同的&#xff0c;那么怎么把PTR用到我们的项…

STM32 网络通信Web Server中 SSI与CGI的应用解析

本次主要解析STM32网络通信中WebServer应用&#xff0c;从网页界面的编写到浏览器与STM32之间进行通信的数据来说明SSI与CGI的原理及应用&#xff0c;并对GET与POST指令进行应用解析。 硬件和软件环境&#xff1a; 1.硬件环境&#xff1a;STM32F407&#xff0c;网卡芯片LAN87…

树莓派SSH 连接不上:socket error Event:32 Error:10053

问题如下&#xff1a; 解决办法&#xff1a;ssh文件夹下的文件权限问题。 cd /etc/ssh sudo chmod 0644 * sudo chmod 0600 ssh_host_ecdsa_key ssh_host_rsa_key登陆成功&#xff1a;

嵌入式设备web服务器比较

现在在嵌入式设备中所使用的web服务器主要有&#xff1a;boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年&#xff0c;作者Paul Philips。是开源的&#xff0c;应用很广泛&#xff0c;特别适合于嵌入式设备&#xff0c…

UML造型——使用EA时序图工具的开发实践和经验

Enterprise Architect&#xff08;下面简称EA&#xff09;是一款基于OMG UML的可视化模型与设计工具。提供了对软件系统的设计和构建、业务流程建模和基于领域建模的支持&#xff0c;被企业和组织不仅应用于对系统的建模&#xff0c;还用于推进模型在整个应用程序开发周期中实现…

Qt QInputDialog文本输入对话框示例

1、代码如下 //引入头文件: #include <QInputDialog>//...//...//...//具体用法&#xff1a; bool isOK;//QInputDialog 是否成功得到输入 QString text QInputDialog::getText(NULL, "参数设定", "输入单次召测统计时间&#xff0c;eg.\"0:0:…

单元测试工具Numega BoundsChecker

From: http://blog.csdn.net/wangweitingaabbcc/article/details/7794985 1 前言 我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。 NuMega是一个动态测试工具&#xff0c;主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuM…

在Codeigniter框架中使用NuSOAP

0、NuSOAP的简介 NuSOAP 是一组功能强大的PHP类&#xff0c;这个工具的发布让使用和创建SOAP消息变得相当简单。 NuSOAP有Dirtrich Ayala编写&#xff0c;可以无缝的与许多最流行的SOAP服务实现交互&#xff0c;它以LGPL协议进行发布。NuSOAP的主要特性包括&#xff1a; 简单&a…

Keil使用PC-Lint

Keil使用PC-Lint 随着项目的推进与迭代&#xff0c;一个Project的代码量往往会不知不觉增长&#xff0c;当项目代码达到数万行&#xff0c;迭代经历较长时间后&#xff0c;仅靠开发人员自身的代码质量已不能满足对整体质量的把控。难以避免会出现一些潜在的逻辑错误与非逻辑错误…