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