日期:2014-05-18  浏览次数:20610 次

当一篇文章可属于多个类,而类又是无限分类时的检索问题
分类采用递归无限级分类,一篇文章可属于N个分类,在检索父目录时如果把他所有的子目录下的文章也一同检索出来?


表设置如下:

分类表

sort_id       sort_name   parent_id
1                   分类1           0
2                   分类2           0
3                   子分类1       1
4                   子分类2       1

文章表

news_id   sort_list
1               |1|
2               |2|
3               |1|2|
4               |2|3|
5               |2|4|
6               |2|3|4|


当检索分类1的文章时,应返回结果如下:

news_id   sort_list
1               |1|
3               |1|2|
4               |2|3|
5               |2|4|
6               |2|3|4|  


请问应如何写SQL???

------解决方案--------------------
刚才那个结果重复,用这个吧

create procedure pro_col
as
declare @cur_col varchar(30)

declare @sql varchar(1000)
set @sql= ' '
declare cur_col cursor for
select distinct sort_id from 分类表 where sort_id=1 or parent_id=1 order by sort_id
open cur_col

fetch next from cur_col into @cur_col
while @@fetch_status = 0

begin


set @sql=@sql+ ' select * from 文章表 where sort_list like ' '% '+ ' '+@cur_col+ ' '+ '% ' ' '+ ' union all '

fetch next from cur_col into @cur_col

end
set @sql= 'select * into #temp from ( '+substring(@sql,1,len(@sql)-10)+ ' )t '+ ' select distinct * from #temp '
print @sql
exec (@sql)

close cur_col
deallocate cur_col

go

exec pro_col

--------------------
news_id sort_list
1 |1|
3 |1|2|
4 |2|3|
5 |2|4|
6 |2|3|4|