最近在做netCMS的二次开发,其中涉及到如题目的问题,该系统只提供了一级分类的文章数的统计和调用。数据库结构如下:新闻分类表:新闻列表:
问题:如何查询到一个分类下所有子分类(可能子分类下还有分类)的新闻?查了一些资料,貌似要用到递归调用,请大虾们帮忙解决下,感激不尽~~,100分送上!

解决方案 »

  1.   

    子父关系
    主键 栏目名称  父ID
    1    a         null
    2    b         1
    3    c         1
    4    d         3…………………
    懂?
      

  2.   

    也就是说三个字段 就把 你这些问题全部解决了每行数据都有主键  一个主键是一个栏目  不管是子级还是父级默认后面的第三个字段 父ID为空
    父ID为空就是没有父亲   没有老爸 那你就是老爸了  你就是 父栏目
    如果父ID不为空  那么他就是 父ID所对应栏目 的下一级 
    ……   一次类推
    懂?  
      

  3.   

    多级分类查询
    http://topic.csdn.net/u/20100510/17/0c48e26c-25a2-41ba-87d8-c78ebad9fc97.html
      

  4.   

    这个就看你的分类表是如何设计的了。如果分类表里面有“父节点ID路径”的字段那就好办了。比如ParentIDPath1
    1,2
    1,2,3
    1,2,3,4那么我用,ParentIDPath like '1,2,%'就可以找到他的所有子分类。================也可以是这样ParentIDPath01
    0102
    010203
    01020304那么我用,ParentIDPath like '0102%'就可以找到他的所有子分类。
      

  5.   

    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
      

  6.   

    我是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