技术开发 频道

简单实用SQL脚本:生成站点导航结构

    【IT168 评论】我们通常的时候,都是先有站点地图,之后对URL的地址进行判断和导航的,那么我们是否可以根据所有收集到的URL来进行分解,从而生成出所有可能的地址,最主要的是要有一个层级的关系。

  我们的数据一般都是如下图1所示的格式,那么我们如何在页面上展现出图2的效果呢?

1
 

  (图1:原始表)

1

  (图2:页面效果图)

  其实就普通树形来说,ID与ParentID这两个字段是少不了的。

1
 

  (图3:数据效果图)

  一、逻辑分析

  1. 使用字符串分割法把一条记录的pagepath字段进行分解成我们需要的字符串,但是这里的分割有一点点不一样,那就是我们需要把前面的字符串也一起返回;

  2. 之后我们就可以对这一段段的字符串进行逻辑处理,也就是进行树形结构的组建;

  a) 我们先来判断@Temppath这新分割出来的字符串是否在表PageUrlTree存在;

  b) 如果是第一条数据,那就是根目录:'/'这个时候就需要特殊处理,把它当成一个根节点,手动设置ID和ParentID值;

  c) 如果不是第一条数据,那就找出上一个pagepath值来查找出ID值,再进行整型数值的运算来递增一个新值出来作为新纪录的ID值;

  d) @countBefore与@TempPath_Before的设定很有意义,因为这是对ParentID判断的一个变量;

  二、技术点

  1. 数据库结构树的设计逻辑;

  2. 数据库游标的使用;

  3. SQL字符串的分割;

  4. SQL判断一个字符在字符串中出现的次数;

  5. 字符串与整数类型之间的转换;

  6. 保存了上个Parent的PagePath值;

  7. 当没有返回值的时候,可以进行@MaxID is null这样的判断

0
相关文章