本帖最后由 qbaozh 于 2010-04-19 17:18:27 编辑

解决方案 »

  1.   

    你只要想一下怎么得到所有父节点的记录,然后再反一下不就行了?
    比如这样的select * from table where type not in (select distinct substring(type,length(type)-1) from table)
      

  2.   

    你那个表的ClassID
     是他的父分类吧?
    那你
    select *from table where ClassID not in (select id from table)  试下
      

  3.   


    type的名称可能是不是我举例那么有必然联系的哦,主要是看classID 与ID之间的联系的
      

  4.   


    是的classID是它的父分类,你这样的话是把父级的分类查出来,
    如果用这样的话SELECT * FROM T_NewsType WHERE classid  IN(SELECT id FROM T_NewsType)
    查出来的又不全,比如父分类下没有子节点的也查不出
      

  5.   

    呃  不好意思 昨天 太急了 写倒了
    SELECT *FROM test WHERE id not in (select ClassID from test);
    这个试下
      

  6.   

    那就是说判断他有没有父亲撒,有父亲他就是儿子撒
    SELECT * FROM test WHERE Shangji <>0;
      

  7.   

    SELECT * FROM test WHERE ClassID <>0;
      

  8.   


    这只是其中的一部分
    就比如 我举的例中的这两条(classID=1),但这两条也是子结点啊
    3 分类11 1
    4 分类12 1
    它的父级是这一条:1 分类1 0
      

  9.   


    如这两条,其实也是没有子节点的撒,所以classID<>0的话就有点不对了的哒
    2 分类2 0
    5 分类3 0
      

  10.   

    SELECT * FROM test WHERE ClassID <>0 这句查出的不是所有的子节点么?
      

  11.   

    你的下面的问题不是说判断他是否是子节点么, 看他的ClassID  啊  如果ClassID  是0 的话 就是说没有父节点 那他就不是子节点
      

  12.   

    哦我的意思就是确定某一分类有没有上一级分类
    比如
    5 分类3 0
    我就说这个没有子分类了,
    并不是ClassID=0的就是父级分类,其它的就是子分类,可能子分类的概念有点不同,我说的子分类是说它下边还有一级分类,若5 分类3 0 它的下边没有分类了,也就子分类的
      

  13.   

    ..那你现在到底是要实现什么样的效果呢?
    我的意思就是确定某一分类有没有上一级分类   这句话 如果ClassID=0 的话 不就是他没有上级分了么?是我理解错误还是你表达错误啊?你把你表需要的数据列出来 
    然后将你查找后想要实现的数据列出来
      

  14.   

    信息表:info
    分类表:classSELECT * FROM [info] WHERE classid IN (select id FROM [class] WHERE ClassID =0)//只有一级分类的信息SELECT * FROM [info] WHERE classid IN (select id FROM [class] WHERE ClassID >0)//有二级或以上分类的信息