读书人

当一篇文章可属于多个类而类又是无限

发布时间: 2012-02-05 12:07:15 作者: rapoo

当一篇文章可属于多个类,而类又是无限分类时的检索问题
分类采用递归无限级分类,一篇文章可属于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|

读书人网 >SQL Server

热点推荐