首页 新闻 会员 周边

关于父分类获取子分类数据的问题

0
悬赏园豆:5 [已解决问题] 解决于 2014-05-04 06:13

有个分类表T_category如下:

id,pid,name

1,0,分类一

2,0,分类二

3,1,分类三

4,1,分类四

当pid=0时就是顶级分类。

然后有个文章T_article表,

id,cid,title,content

1,3,标题,内容

2,3,标题,内容

1,1,标题,内容

T_article表中的cid对应T_category表中的id

 

然后有个分类列表页面,比如/list/1(这里的1就是category的id)

在访问时怎么获取T_article中cid为1的文章并且还获取他所有的子分类的文章?

这样的SQL语句怎么写效率高一点,我现在用的是in,效率不太好。

 

select * from
(select *,Row_Number() over(order by id desc) as rowNumber
 from T_article where  cid in (select id from T_category where pid=1 or id=1)
 )t

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2014-05-03 08:55
< >
分享
最佳答案
0

首先,这个数据表的设计只是最基本的,如果要想更好用,还需要扩展几个字段。

1、你这样的SQL可以达到的目标也就是只有两级分类的时候是对的,如果是N级分类,就没有办法这样写了。

2、如果只是两级分类,你就想太多了,直接一句话就可以搞定了。

    Select * from T_Article A

    inner join T_category B

    on A.CID=B.ID

    where B.PID=1 OR B.ID=1

 

3、如果是要N级分类可用的,这个说来话长,不过一个可用的方法是使用Like 'Code%'这样的方法。

一般也不使用In这种写法。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-05-03 09:57
其他回答(1)
0

 用in也没什么,除非数据量特别大,这个分类不会很大

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-05-03 11:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册