$sql = "select * from sort LEFT JOIN article ON sort.sortID=article.sortID where sortID=1";

解决方案 »

  1.   

    例子如下:
    title          id
    IT新闻          2
       软件新闻     3
       硬件新闻     4
    体育新闻        5
    .....
    现在想取得IT新闻分类中的所有文章,当然要包括软件和硬件新闻,
    在文章表中查询时,先要查询分类表id=2的记录信息,然后再与文章表联接,才能得到正确的结果。
    我的意思是能不能只用一次查询就将IT新闻中的所有文章记录取出来。
      

  2.   

    select t.*,e.content from tab1 t left join tab2 e on t.id=e.sortid where e.pid=xxx
      

  3.   

    可能你的数据表结构不好吧,这样的情况,我一般是
    table sort
    id title
    1  IT新闻
    2  软件新闻table article
    id sid title content
    1  1   xxxx  xxxx
    2  1   xxxx  xxxx
    3  1   xxxx  xxxx
    4  2   xxxx  xxxx
    .................
      

  4.   

    要想一次查询的完的话,可以试试动网的那样,只不过要加入一个字段才行啊,就是直接用group by 进行分组啊试试
      

  5.   

    你需要有一个字段来表示3、4归属于2。
    通常应该有一个root_id来完成该任务title          id root_id
    IT新闻          2       0
       软件新闻     3       2
       硬件新闻     4       2
    体育新闻        5       0检索时
    select * form sort,new where sort.id=new.sortID and (sort.id=2 or sort.root_id=2)
      

  6.   

    to  xuzuning:
    假如软件新闻下面又分WEB开发,数据库开发等子类,
    那么列出软件新闻分类中的所有新闻时该语句就有问题了
    因为root_id=2时,将会把硬件新闻也检索出来,
    这时肯定要再加以条件(如deep> id=2的deep)
    这样的话不知道一条语句能实现否?
      

  7.   

    可以换一种表示方式啊
    id title sort
    1   xxxx  01
    2  xxxx   0101
    3  xxxxx  0102
    4  xxxx   02
    5  xxxx   0201
    6  xxxx   010201
      

  8.   

    稻草人的中值排序概念有个错误。
    软件新闻如果再分的话,它的下一级的的root_id是它,即3而不是2。
      

  9.   

    to syre:
    这种方法我已经实现了。它的深度是有限的,我想换一种方法试试
    to zairwolf:
    是吗?据说了解root_id是表示"根",如果像你说的那样应该是parent_id了,
    而且使用root_id可以方便的生成导航条,用parent_id虽然也能实现,但应该比较麻烦.
      

  10.   

    中值排序用四个字段。父节点再加上deep和ordernum,基本上可以解决排序问题了。ckong就是那么实现的。
      

  11.   

    个人认为 syre 的方法是可行的
    sort table
    id sortid name
    1  01    新闻
    2  0101  体育新闻
    3  010101 体坛快报
    4  02    天气id title sort
    1   xxxx  01
    2  xxxx   0101
    3  xxxxx  0102
    4  xxxx   02
    5  xxxx   0201
    6  xxxx   010201
    查询此某分类新闻:
    select * from sort,news where news.sort=sort.sortid
    查询某分类及其所有子分类:
    select * from sort,news where news.sort like concat(sort.sortid,'%')经过调试已经通过望参鉴,如有错误,或是理解错误,请指正。
      

  12.   

    甚至于只想查找这个分类及它子分类中某个特定分类及它的子类只要好好的利用MYSQL的字符串函数就行了