WEB开发网
开发学院数据库MSSQL Server 层次结构的数据库处理 阅读

层次结构的数据库处理

 2010-03-12 00:00:00 来源:WEB开发网   
核心提示: 因为 left 和 right 在MySQL当中是保留字,我们使用 lft 和 rgt 来分别表示,层次结构的数据库处理(5),(有关MySQL的保留字的全部信息,请参考 http://dev.mysql.com/doc/mysql/en/reserved-words.html ) 那我们如何决

因为 left 和 right 在MySQL当中是保留字,我们使用 lft 和 rgt 来分别表示。(有关MySQL的保留字的全部信息,请参考 http://dev.mysql.com/doc/mysql/en/reserved-words.html )

那我们如何决定左、右值呢? 我们从最左边开始向右,为各个集合的边界标上数字编号,如下图:

层次结构的数据库处理

查看原图(大图)

这个编号设计套用在树形图上如下:

层次结构的数据库处理

查看原图(大图)

当我们对树形结构编号时,从左向右,一次一层,每个节点左边编号后,紧接着向其下层子节点编号,然后再为节点的右边编号。这个方法被称为改进的“前序遍历树算法”。

取得整个树

基于子节点的 lft 值始终位于其父节点的 lft 和 rgt 值之间的原理,使用自连接的SQL即可取得整棵树。

SELECT node.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.name = 'ELECTRONICS'
ORDER BY node.lft;
+---------------------------+
| name                               |
+---------------------------+
| ELECTRONICS                  |
| TELEVISIONS                   |
| TUBE                              |
| LCD                                |
| PLASMA                          |
| PORTABLE ELECTRONICS |
| MP3 PLAYERS                  |
| FLASH                            |
| CD PLAYERS                   |
| 2 WAY RADIOS               |
+--------------------------+

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:层次 结构 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接