Heim > Datenbank > MySQL-Tutorial > 树状结构表中,获取指定节点的所有父节点路径

树状结构表中,获取指定节点的所有父节点路径

WBOY
Freigeben: 2016-06-07 14:55:08
Original
1285 Leute haben es durchsucht

树状结构表中,获取指定节点的所有父节点路径,为了方便查看,我增加了节点的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。
Nach dem Login kopieren
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)
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage