关系数据库当中存放树形结构(同层有序),一次性生成对应树形菜单
2013-07-15 23:56
701 查看
@sonikk 2013-7-16 0:27:38 ^_^
这是数据库:
这事对应的脚本文件:
db_test1.sql
这是程序执行结果:
:
id=61, posnr= 1, up= 0, down= 4, left= , right= 2, txt=工程1
id=62, posnr= 2, up= 0, down= 7, left= 1, right= 3, txt=工程2
id=63, posnr= 3, up= 0, down= , left= 2, right= , txt=工程3
id=64, posnr= 4, up= 1, down= 9, left= , right= 5, txt=工程1-1
id=65, posnr= 5, up= 1, down=12, left= 4, right=17, txt=工程1-2
id=66, posnr= 6, up= 1, down= , left=17, right= , txt=工程1-4
id=67, posnr= 7, up= 2, down=15, left= , right= 8, txt=工程2-1
id=68, posnr= 8, up= 2, down= , left= 7, right= , txt=工程2-2
id=69, posnr= 9, up= 4, down= , left= , right=10, txt=工程1-1-1
id=70, posnr=10, up= 4, down=14, left= 9, right=11, txt=工程1-1-2
id=71, posnr=11, up= 4, down= , left=10, right= , txt=工程1-1-3
id=72, posnr=12, up= 5, down= , left= , right=13, txt=工程1-2-1
id=73, posnr=13, up= 5, down= , left=12, right= , txt=工程1-2-2
id=74, posnr=14, up=10, down= , left= , right= , txt=工程1-1-2-1
id=75, posnr=15, up= 7, down= , left= , right=16, txt=工程2-1-1
id=76, posnr=16, up= 7, down= , left=15, right= , txt=工程2-1-2
id=77, posnr=17, up= 1, down= , left= 5, right= 6, txt=工程1-3
id=78, posnr= 0, up= , down= 1, left= , right= , txt=根节点
=======================
[travel]:
id=78, posnr= 0, up= , down= 1, left= , right= , txt=根节点
id=61, posnr= 1, up= 0, down= 4, left= , right= 2, txt=工程1
id=62, posnr= 2, up= 0, down= 7, left= 1, right= 3, txt=工程2
id=63, posnr= 3, up= 0, down= , left= 2, right= , txt=工程3
id=64, posnr= 4, up= 1, down= 9, left= , right= 5, txt=工程1-1
id=65, posnr= 5, up= 1, down=12, left= 4, right=17, txt=工程1-2
id=77, posnr=17, up= 1, down= , left= 5, right= 6, txt=工程1-3
id=66, posnr= 6, up= 1, down= , left=17, right= , txt=工程1-4
id=67, posnr= 7, up= 2, down=15, left= , right= 8, txt=工程2-1
id=68, posnr= 8, up= 2, down= , left= 7, right= , txt=工程2-2
id=69, posnr= 9, up= 4, down= , left= , right=10, txt=工程1-1-1
id=70, posnr=10, up= 4, down=14, left= 9, right=11, txt=工程1-1-2
id=71, posnr=11, up= 4, down= , left=10, right= , txt=工程1-1-3
id=72, posnr=12, up= 5, down= , left= , right=13, txt=工程1-2-1
id=73, posnr=13, up= 5, down= , left=12, right= , txt=工程1-2-2
id=75, posnr=15, up= 7, down= , left= , right=16, txt=工程2-1-1
id=76, posnr=16, up= 7, down= , left=15, right= , txt=工程2-1-2
id=74, posnr=14, up=10, down= , left= , right= , txt=工程1-1-2-1
=======================
[result]:
id=78, posnr= 0, up= , down= 1, left= , right= , txt=根节点
id=61, posnr= 1, up= 0, down= 4, left= , right= 2, txt=工程1
id=64, posnr= 4, up= 1, down= 9, left= , right= 5, txt=工程1-1
id=69, posnr= 9, up= 4, down= , left= , right=10, txt=工程1-1-1
id=70, posnr=10, up= 4, down=14, left= 9, right=11, txt=工程1-1-2
id=74, posnr=14, up=10, down= , left= , right= , txt=工程1-1-2-1
id=71, posnr=11, up= 4, down= , left=10, right= , txt=工程1-1-3
id=65, posnr= 5, up= 1, down=12, left= 4, right=17, txt=工程1-2
id=72, posnr=12, up= 5, down= , left= , right=13, txt=工程1-2-1
id=73, posnr=13, up= 5, down= , left=12, right= , txt=工程1-2-2
id=77, posnr=17, up= 1, down= , left= 5, right= 6, txt=工程1-3
id=66, posnr= 6, up= 1, down= , left=17, right= , txt=工程1-4
id=62, posnr= 2, up= 0, down= 7, left= 1, right= 3, txt=工程2
id=67, posnr= 7, up= 2, down=15, left= , right= 8, txt=工程2-1
id=75, posnr=15, up= 7, down= , left= , right=16, txt=工程2-1-1
id=76, posnr=16, up= 7, down= , left=15, right= , txt=工程2-1-2
id=68, posnr= 8, up= 2, down= , left= 7, right= , txt=工程2-2
id=63, posnr= 3, up= 0, down= , left= 2, right= , txt=工程3
这是数据库:
mysql> use db_test1; Database changed mysql> select * from tb_tree; +----+-------+------+-------+-------+--------+-------------+ | id | posnr | upp | downp | leftp | rightp | txt | +----+-------+------+-------+-------+--------+-------------+ | 61 | 1 | 0 | 4 | NULL | 2 | 工程1 | | 62 | 2 | 0 | 7 | 1 | 3 | 工程2 | | 63 | 3 | 0 | NULL | 2 | NULL | 工程3 | | 64 | 4 | 1 | 9 | NULL | 5 | 工程1-1 | | 65 | 5 | 1 | 12 | 4 | 17 | 工程1-2 | | 66 | 6 | 1 | NULL | 17 | NULL | 工程1-4 | | 67 | 7 | 2 | 15 | NULL | 8 | 工程2-1 | | 68 | 8 | 2 | NULL | 7 | NULL | 工程2-2 | | 69 | 9 | 4 | NULL | NULL | 10 | 工程1-1-1 | | 70 | 10 | 4 | 14 | 9 | 11 | 工程1-1-2 | | 71 | 11 | 4 | NULL | 10 | NULL | 工程1-1-3 | | 72 | 12 | 5 | NULL | NULL | 13 | 工程1-2-1 | | 73 | 13 | 5 | NULL | 12 | NULL | 工程1-2-2 | | 74 | 14 | 10 | NULL | NULL | NULL | 工程1-1-2-1 | | 75 | 15 | 7 | NULL | NULL | 16 | 工程2-1-1 | | 76 | 16 | 7 | NULL | 15 | NULL | 工程2-1-2 | | 77 | 17 | 1 | NULL | 5 | 6 | 工程1-3 | | 78 | 0 | NULL | 1 | NULL | NULL | 根节点 | +----+-------+------+-------+-------+--------+-------------+ 18 rows in set (0.02 sec)
这事对应的脚本文件:
db_test1.sql
/* Navicat MySQL Data Transfer Source Server : local Source Server Version : 50612 Source Host : localhost:3306 Source Database : db_test1 Target Server Type : MYSQL Target Server Version : 50612 File Encoding : 65001 Date: 2013-07-15 23:42:30 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `tb_tree` -- ---------------------------- DROP TABLE IF EXISTS `tb_tree`; CREATE TABLE `tb_tree` ( `id` int(11) NOT NULL AUTO_INCREMENT, `posnr` int(11) DEFAULT NULL, `upp` int(11) DEFAULT NULL, `downp` int(11) DEFAULT NULL, `leftp` int(11) DEFAULT NULL, `rightp` int(11) DEFAULT NULL, `txt` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `posnr_UNIQUE` (`posnr`) ) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of tb_tree -- ---------------------------- INSERT INTO `tb_tree` VALUES ('61', '1', '0', '4', null, '2', '工程1'); INSERT INTO `tb_tree` VALUES ('62', '2', '0', '7', '1', '3', '工程2'); INSERT INTO `tb_tree` VALUES ('63', '3', '0', null, '2', null, '工程3'); INSERT INTO `tb_tree` VALUES ('64', '4', '1', '9', null, '5', '工程1-1'); INSERT INTO `tb_tree` VALUES ('65', '5', '1', '12', '4', '17', '工程1-2'); INSERT INTO `tb_tree` VALUES ('66', '6', '1', null, '17', null, '工程1-4'); INSERT INTO `tb_tree` VALUES ('67', '7', '2', '15', null, '8', '工程2-1'); INSERT INTO `tb_tree` VALUES ('68', '8', '2', null, '7', null, '工程2-2'); INSERT INTO `tb_tree` VALUES ('69', '9', '4', null, null, '10', '工程1-1-1'); INSERT INTO `tb_tree` VALUES ('70', '10', '4', '14', '9', '11', '工程1-1-2'); INSERT INTO `tb_tree` VALUES ('71', '11', '4', null, '10', null, '工程1-1-3'); INSERT INTO `tb_tree` VALUES ('72', '12', '5', null, null, '13', '工程1-2-1'); INSERT INTO `tb_tree` VALUES ('73', '13', '5', null, '12', null, '工程1-2-2'); INSERT INTO `tb_tree` VALUES ('74', '14', '10', null, null, null, '工程1-1-2-1'); INSERT INTO `tb_tree` VALUES ('75', '15', '7', null, null, '16', '工程2-1-1'); INSERT INTO `tb_tree` VALUES ('76', '16', '7', null, '15', null, '工程2-1-2'); INSERT INTO `tb_tree` VALUES ('77', '17', '1', null, '5', '6', '工程1-3'); INSERT INTO `tb_tree` VALUES ('78', '0', null, '1', null, null, '根节点');
这是程序执行结果:
=======================