CMS新闻类别的无限级分类以及该分类下的文章调用和统计
最近在做netCMS的二次开发,其中涉及到如题目的问题,该系统只提供了一级分类的文章数的统计和调用。数据库结构如下:新闻分类表:
新闻列表:
问题:如何查询到一个分类下所有子分类(可能子分类下还有分类)的新闻?
查了一些资料,貌似要用到递归调用,请大虾们帮忙解决下,感激不尽~~,100分送上! --------------------编程问答-------------------- 子父关系
主键 栏目名称 父ID
1 a null
2 b 1
3 c 1
4 d 3
…………………
懂? --------------------编程问答--------------------
不懂,希望详细点解释~~ --------------------编程问答-------------------- 也就是说三个字段 就把 你这些问题全部解决了
每行数据都有主键 一个主键是一个栏目 不管是子级还是父级
默认后面的第三个字段 父ID为空
父ID为空就是没有父亲 没有老爸 那你就是老爸了 你就是 父栏目
如果父ID不为空 那么他就是 父ID所对应栏目 的下一级
…… 一次类推
懂? --------------------编程问答-------------------- 多级分类查询
http://topic.csdn.net/u/20100510/17/0c48e26c-25a2-41ba-87d8-c78ebad9fc97.html --------------------编程问答--------------------
+1 这个够详细了 lz 多搜搜 就懂了 --------------------编程问答-------------------- 仔细研究下就OK了。 --------------------编程问答-------------------- 这个就看你的分类表是如何设计的了。
如果分类表里面有“父节点ID路径”的字段那就好办了。
比如
ParentIDPath
1
1,2
1,2,3
1,2,3,4
那么我用,ParentIDPath like '1,2,%'就可以找到他的所有子分类。
================
也可以是这样
ParentIDPath
01
0102
010203
01020304
那么我用,ParentIDPath like '0102%'就可以找到他的所有子分类。
--------------------编程问答--------------------
这个方法确实不错,很好懂,可惜数据库不是这样设计的。 --------------------编程问答-------------------- 父子 或者父子+兄弟 --------------------编程问答-------------------- WITH T AS
(
SELECT classID ,parentID , className
FROM TB
WHERE classID = 你要查的classID
UNION ALL
SELECT A.classID, A.parentID , A.className
FROM TB AS A JOIN T AS B ON A.PID = B.ID
)
SELECT * FROM T ORDER BY ID
--------------------编程问答-------------------- --------------------编程问答-------------------- 我是10楼,上一个有字段忘记改名字了
WITH T AS
(
SELECT classID ,parentID , className
FROM TB
WHERE classID = 你要查的classID
UNION ALL
SELECT A.classID, A.parentID , A.className
FROM TB AS A JOIN T AS B ON A.parentID = B.classID
)
SELECT * FROM T ORDER BY classID --------------------编程问答-------------------- sed
补充:.NET技术 , ASP.NET