- 爱易网页
-
MSSQL教程
- *关于分类和产品,根据分类捞取该分类下及子分类下的产品的所有记录。请大侠门来帮忙呀。敬礼!该如何解决
日期:2014-05-19 浏览次数:20641 次
****关于分类和产品,根据分类捞取该分类下及子分类下的产品的所有记录。。请大侠门来帮忙呀。。敬礼!
表结构如下:
product表
id name categoryid
1 体育信息 1
2 文娱信息 2
3 健康信息 3
4 足球信息 4
5 蓝球信息 5
6 明星信息 6
7 趣事信息 7
8 保健信息 8
9 足球世界杯信息 9
category表
categoryid categoryname parentid
1 体育 0
2 文娱 0
3 健康 0
4 足球 1
5 蓝球 1
6 明星 2
7 趣事 2
8 保健 3
9 足球世界杯 4
现在的select下拉框如下显示 :
*************************
体育
--足球
--足球世界杯
--蓝球
文娱
--明星
--趣事
健康
--保健
*************************
如果我选择 "体育 ",希望捞到记录1,4,5,9
如果我选择 "足球 ",希望捞到记录4,9
如果我选择 "足球世界杯 ",希望捞到记录9
也就是选取大类时要把子类中的记录也捞出来。。
请问怎么写SQL才会更合适。。因为我写的速度太慢
------解决方案--------------------
写个函数返回所有子类
create function fn_allsub(
@categoryid int
)
returns @r table (categoryid int,categoryname varchar(30),parentid int)
as
begin
insert @r select * from category where categoryid=@categoryid
while exists (select 1 from category where parentid in (select categoryid from @r) and categoryid not in (select categoryid from @r))
insert @r select * from category where parentid in (select categoryid from @r) and categoryid not in (select categoryid from @r)
return
end