树状结构表中,获取指定节点的所有父节点路径,为了方便查看,我增加了节点的id。 无 drop table if exists `group`;create table `group` (`id` int(11) not null auto_increment,`parent_group_id` int(11) not null default '-1',`name` varchar(255) not
树状结构表中,获取指定节点的所有父节点路径,为了方便查看,我增加了节点的id。
drop table if exists `group`; create table `group` ( `id` int(11) not null auto_increment, `parent_group_id` int(11) not null default '-1', `name` varchar(255) not null, primary key (`id`) ); insert into `group` (`id`, `name`, `parent_group_id`) values (1, 'a', -1); insert into `group` (`id`, `name`, `parent_group_id`) values (2, 'b', -1); insert into `group` (`id`, `name`, `parent_group_id`) values (3, 'c', 1); /** * 返回树状结构表中指定节点的父节点路径. * 张露兵 zhanglubing927@163.com * 2012-2-21 */ drop procedure if exists get_path; delimiter $ create procedure get_path(in id int) begin declare gid int default id; declare path varchar(255) default ''; while gid is not null and gid != -1 do select concat(concat(g.name,'(', g.id, ')'), '-', path), g.parent_group_id into path, gid from `group` g where g.id = gid; end while; select substring(path, 1, length(path)-1) 'path'; end $ -- call get_path(3); -- a(1)-c(3)