select a.* , b.* , c.* from a, b, c where a.id = b.aid and b.id = c.bid假设表之间关联为:a.id = b.aid and b.id = c.bid
服装 男装 劲霸男装 外套 夹克 女装 OLEY 短袖 类似这样的就行了。
服装 --男装 --劲霸男装 -- 外套 -- 夹克 --女装 --OLEY --短袖
/* 标题:SQL SERVER 2000中树查询显示层次 作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 时间:2010-02-4 地点:新疆乌鲁木齐 */create table tb(id int , pid int , name varchar(10)) insert into tb values(1 , 0 , '广东省') insert into tb values(2 , 1 , '广州市') insert into tb values(3 , 1 , '深圳市') insert into tb values(4 , 2 , '天河区') insert into tb values(5 , 3 , '罗湖区') insert into tb values(6 , 3 , '福田区') insert into tb values(7 , 3 , '宝安区') insert into tb values(8 , 7 , '西乡镇') insert into tb values(9 , 7 , '龙华镇') insert into tb values(10 ,7 , '松岗镇') gocreate function f_getnum(@id int) returns varchar(4000) as begin declare @ret varchar(4000) , @pid int set @ret = right('0000' + rtrim(@id) , 4) while exists(select 1 from tb where id = @id and pid <> 0 ) begin select @pid = pid from tb where id = @id and pid <> 0 set @id = @pid set @ret = right('0000' + rtrim(@id) , 4) + @ret end return @ret end goselect id , name , REPLICATE('-' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum drop table tb/* id name name ----------- ---------- --------------- 1 广东省 广东省 2 广州市 -广州市 4 天河区 --天河区 3 深圳市 -深圳市 5 罗湖区 --罗湖区 6 福田区 --福田区 7 宝安区 --宝安区 8 西乡镇 ---西乡镇 9 龙华镇 ---龙华镇 10 松岗镇 ---松岗镇(所影响的行数为 10 行)*/ create table tb (id int , Name varchar(10) , pid int ) insert into tb values(1 ,'广东省' , 0) insert into tb values(2 ,'四川省' , 0) insert into tb values(3 ,'湖北省' , 0) insert into tb values(4 ,'东莞市' , 1) insert into tb values(5 ,'广州市' , 1) insert into tb values(6 ,'天河区' , 5) insert into tb values(7 ,'绵阳市' , 2) insert into tb values(8 ,'武汉市' , 3) insert into tb values(9 ,'汉口区' , 8) insert into tb values(10,'随州市' , 3) gocreate function f_getnum(@id int) returns varchar(4000) as begin declare @ret varchar(4000) , @pid int set @ret = right(' ' + rtrim(@id) , 4) while exists(select 1 from tb where id = @id and pid <> 0 ) begin select @pid = pid from tb where id = @id and pid <> 0 set @id = @pid set @ret = right(' ' + rtrim(@id) , 4) + @ret end return @ret end goselect id , name , REPLICATE(' ' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum drop table tb/* id name name ----------- ---------- -------------- 1 广东省 广东省 4 东莞市 东莞市 5 广州市 广州市 6 天河区 天河区 2 四川省 四川省 7 绵阳市 绵阳市 3 湖北省 湖北省 8 武汉市 武汉市 9 汉口区 汉口区 10 随州市 随州市(所影响的行数为 10 行) */
from a, b, c
where a.id = b.aid and b.id = c.bid假设表之间关联为:a.id = b.aid and b.id = c.bid
男装
劲霸男装
外套
夹克
女装
OLEY
短袖
类似这样的就行了。
--男装
--劲霸男装
-- 外套
-- 夹克
--女装
--OLEY
--短袖
/*
标题:SQL SERVER 2000中树查询显示层次
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2010-02-4
地点:新疆乌鲁木齐
*/create table tb(id int , pid int , name varchar(10))
insert into tb values(1 , 0 , '广东省')
insert into tb values(2 , 1 , '广州市')
insert into tb values(3 , 1 , '深圳市')
insert into tb values(4 , 2 , '天河区')
insert into tb values(5 , 3 , '罗湖区')
insert into tb values(6 , 3 , '福田区')
insert into tb values(7 , 3 , '宝安区')
insert into tb values(8 , 7 , '西乡镇')
insert into tb values(9 , 7 , '龙华镇')
insert into tb values(10 ,7 , '松岗镇')
gocreate function f_getnum(@id int) returns varchar(4000)
as
begin
declare @ret varchar(4000) , @pid int
set @ret = right('0000' + rtrim(@id) , 4)
while exists(select 1 from tb where id = @id and pid <> 0 )
begin
select @pid = pid from tb where id = @id and pid <> 0
set @id = @pid
set @ret = right('0000' + rtrim(@id) , 4) + @ret
end
return @ret
end
goselect id , name , REPLICATE('-' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum
drop table tb/*
id name name
----------- ---------- ---------------
1 广东省 广东省
2 广州市 -广州市
4 天河区 --天河区
3 深圳市 -深圳市
5 罗湖区 --罗湖区
6 福田区 --福田区
7 宝安区 --宝安区
8 西乡镇 ---西乡镇
9 龙华镇 ---龙华镇
10 松岗镇 ---松岗镇(所影响的行数为 10 行)*/
create table tb (id int , Name varchar(10) , pid int )
insert into tb values(1 ,'广东省' , 0)
insert into tb values(2 ,'四川省' , 0)
insert into tb values(3 ,'湖北省' , 0)
insert into tb values(4 ,'东莞市' , 1)
insert into tb values(5 ,'广州市' , 1)
insert into tb values(6 ,'天河区' , 5)
insert into tb values(7 ,'绵阳市' , 2)
insert into tb values(8 ,'武汉市' , 3)
insert into tb values(9 ,'汉口区' , 8)
insert into tb values(10,'随州市' , 3)
gocreate function f_getnum(@id int) returns varchar(4000)
as
begin
declare @ret varchar(4000) , @pid int
set @ret = right(' ' + rtrim(@id) , 4)
while exists(select 1 from tb where id = @id and pid <> 0 )
begin
select @pid = pid from tb where id = @id and pid <> 0
set @id = @pid
set @ret = right(' ' + rtrim(@id) , 4) + @ret
end
return @ret
end
goselect id , name , REPLICATE(' ' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum
drop table tb/*
id name name
----------- ---------- --------------
1 广东省 广东省
4 东莞市 东莞市
5 广州市 广州市
6 天河区 天河区
2 四川省 四川省
7 绵阳市 绵阳市
3 湖北省 湖北省
8 武汉市 武汉市
9 汉口区 汉口区
10 随州市 随州市(所影响的行数为 10 行)
*/
1 衣服 3 短袖 1 4 超人短袖 3
1 衣服 3 短袖 1 5 无敌短袖 3
1 衣服 2 裤子 1 6 XX裤子 2
1 衣服 1 外套 1 1 劲霸男装 1
1 衣服 1 外套 1 2 迪奥 1
1 衣服 1 外套 1 3 OLEY 1
2 鞋子 6 运动鞋 2 10 安踏 6
2 鞋子 6 运动鞋 2 9 李宁 6
2 鞋子 6 运动鞋 2 8 nike 6
请问2楼大侠你的这个是mysql的吗?go是什么意思