请熟悉中值排序法的朋友进来看一下

ice_berg16 2005-05-17 10:50:19
使用中值排序来处理数据时,有下面的疑问,
中值排序的表做为新闻分类表(sort)来使用,
那么在新闻分类表中有一个sortID与sort表的id关联,
在取一个分类下的所有文章(包括子分类的所有文章)时,如何用一次查询就能完成请求,
目前我发现必须先查出该sortID的信息,再根据信息进行二次查询。
有什么办法解决吗?
...全文
190 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_berg16 2005-05-18
  • 打赏
  • 举报
回复
UP一下,一起研究一下啊
-神仙- 2005-05-18
  • 打赏
  • 举报
回复
访问量大了就优化查询还不如用缓存有效
ice_berg16 2005-05-18
  • 打赏
  • 举报
回复
也不是非要这样,呵呵,考虑到查询优化的问题,
如果访问量不大多一次查询其实也没什么,
xuzuning 2005-05-18
  • 打赏
  • 举报
回复
你为什么要这样做呢,其实你可以先取出相关的子树,然后在输出时再决定取舍

干吗非要一次就准确的得到结果集呢
ice_berg16 2005-05-18
  • 打赏
  • 举报
回复
......
anerg2046 2005-05-17
  • 打赏
  • 举报
回复
$sql = "select * from sort LEFT JOIN article ON sort.sortID=article.sortID where sortID=1";
xuzuning 2005-05-17
  • 打赏
  • 举报
回复
不太明白你的意思
helloyou0 2005-05-17
  • 打赏
  • 举报
回复
目前分类的排序除了中值还有些什么办法?
谁能总结一下?
keaizhong 2005-05-17
  • 打赏
  • 举报
回复
是哦,我一直都是用两次查寻的。
好像很难实现一次吧。
除非用别的比较新的方法来排序。关注中。。
死胖子 2005-05-17
  • 打赏
  • 举报
回复
甚至于只想查找这个分类及它子分类中某个特定分类及它的子类。。。只要好好的利用MYSQL的字符串函数就行了。。。
-神仙- 2005-05-17
  • 打赏
  • 举报
回复
查找结果可以缓存到文件
死胖子 2005-05-17
  • 打赏
  • 举报
回复
个人认为 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,'%')

经过调试已经通过。。。望参鉴,如有错误,或是理解错误,请指正。
zairwolf 2005-05-17
  • 打赏
  • 举报
回复
那样太夸张了。
-神仙- 2005-05-17
  • 打赏
  • 举报
回复
另一个方法
一次把所有数据读取到内存里面
zairwolf 2005-05-17
  • 打赏
  • 举报
回复
中值排序用四个字段。父节点再加上deep和ordernum,基本上可以解决排序问题了。ckong就是那么实现的。
zairwolf 2005-05-17
  • 打赏
  • 举报
回复
对了,是有那个区别。
不过通常的中值排序法,似乎就是父节点。
ice_berg16 2005-05-17
  • 打赏
  • 举报
回复
to syre:
这种方法我已经实现了。它的深度是有限的,我想换一种方法试试
to zairwolf:
是吗?据说了解root_id是表示"根",如果像你说的那样应该是parent_id了,
而且使用root_id可以方便的生成导航条,用parent_id虽然也能实现,但应该比较麻烦.
zairwolf 2005-05-17
  • 打赏
  • 举报
回复
稻草人的中值排序概念有个错误。
软件新闻如果再分的话,它的下一级的的root_id是它,即3而不是2。
-神仙- 2005-05-17
  • 打赏
  • 举报
回复
可以换一种表示方式啊
id title sort
1 xxxx 01
2 xxxx 0101
3 xxxxx 0102
4 xxxx 02
5 xxxx 0201
6 xxxx 010201
ice_berg16 2005-05-17
  • 打赏
  • 举报
回复
to xuzuning:
假如软件新闻下面又分WEB开发,数据库开发等子类,
那么列出软件新闻分类中的所有新闻时该语句就有问题了
因为root_id=2时,将会把硬件新闻也检索出来,
这时肯定要再加以条件(如deep> id=2的deep)
这样的话不知道一条语句能实现否?
加载更多回复(5)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧