我的分类表:classtype
cid   id自增,栏目的ID
typename 栏目名称
parent  父类
route  路由,从父类到自己的路由,由逗号间隔。我的新闻表:news
nid  id自增,新闻ID
title 新闻标题
cid  栏目的id这样的话。我的新闻表cid是存classtype类别表的cid字段。如果我现在分类是:
cid | typename |  parent |  route
1     新闻            0            1
2     新闻子类1     1            1,2
2     新闻子类2     1            1,2我现在新闻如下:
nid | title |   cid
1 新闻标题    2而我查询所有“新闻”时,是cid = 1 ,但是我的新闻却存的是子类(2).我现在该怎么取出这些子类新闻呢?有什么样的好方法?

解决方案 »

  1.   

    route 本身就是冗余.
    如果没有这个字段,你可能就按本逐源(成语写错了),没有烦恼了.
      

  2.   


    我最开始写的是没有的。但是如果你要查询分类1,2,3,4 中1的所有子类。估计够循环了。如果这样的话。就只需要LIKE '1%'就行了。
      

  3.   

    like '1%'勉强还可以,
    哪如果你要查2呢,用like '%2%',哪就更加不高效了.
      

  4.   

    当然不会查%2%了。我肯定是查出它的route 来查:'1,2%'
      

  5.   

    问题归结为你的分类表的设计问题,建议参考下fleaphp中有关无限分类的介绍,它里面有关于无限分类现成的代码,只要稍加改动,就可以脱离fleaphp环境。它的无限分类被设计为 只需要一个sql就可以查询出某个分类下的所有子分类,很方便的
      

  6.   

    你的疑惑不是已经被你释疑了吗? 如果你要查询分类1,2,3,4 中1的所有子类。估计够循环了。如果这样的话。就只需要LIKE '1%'就行了。
    我肯定是查出它的route 来查:'1,2%'