关于MYSQL递归的问题,谁能帮帮我? 对mysql而言只能用php编程实现,一点都不慢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用一门语言(比如PHP)编写一个递归调用的程序来操作数据库,虽然查询次数多一点,但是没有什么办法 这样的话,表结构是最重要的我记得有一个表结构是这样的idusername //名子index_id //是否在同一个家taxis //级别parent_id //父,没有为0下面为例:id username index_id taxis parent_id1 aa 1 0000 02 bb1 1 0001 13 bb2 1 0002 14 bb3 1 0003 15 cc1 1 00010001 26 cc2 1 00010002 2能看明白吗,这个是同一个家的由index_id决定,也就是taxis为0000的,儿子是2,3,4第二个儿子的儿子是5,6这样的话一条语句就可以了select * from table where <条件> order by index_id, taxis http://expert.csdn.net/Expert/topic/2158/2158259.xml?temp=.8988306 xizi2002您的回答对我有一定的启发,但还是没有找到解决的办法!比如:一个家庭肯定有祖宗十八代之多,如果按您的方法taxis这个字段那得多大呀!再说aa也有可能是别人的儿子呀! xjw008(xjw):呵呵,就算他有40代.40*4=160个.taxis不过160个字符串吧.不过你说的aa也有可能是别人的儿子是可以确定的.呵呵~~ 刚才作了以下测试,感觉这样写是可以的id username up1 abc 2 efg abc3 hij abc4 kln efg5 xyz efg6 xxx abcSELECT *,if(up='',username,up) as pp FROM `test1` order by pp,up得id username up pp1 abc abc2 efg abc abc3 hij abc abc6 xxx abc abc4 kln efg efg5 xyz efg efg xuzuning(唠叨) 谢谢您的回答,if(up='',username,up) as pp 是什么意思? pp是作什么用的!整个程序作何理解?再次感谢! if(up='',username,up) as pp 如果up字段为空则取username字段内容,可理解为没有父亲的节点的父亲为自己派生出的字段pp为排序用,以便将同一组的记录归在一起不过这个方法只适用于二级,多了时不好弄。xizi2002(☆☆戏☆子☆☆) 的方法可以,只是给taxis赋值是很麻烦的事情。因为他要罗列全部的父节点按你的数据组织方式,通用点的还是编程读取全部记录到数组(按up字段排序)然后用递归函数遍历数组,以生成新数组。按你的数据组织方式,一个儿子只会有一个父亲,一个父亲可能有多个儿子 xuzuning(唠叨), xizi2002(☆☆戏☆子☆☆)给出的方法不错,值得学习对于这个问题,最好是先读到数组,再用数组遍历 timestamp类型的加法运算 对象为什么不自动初始化 如何防止别人下载我的文件 菜鸟求助了啊,没分的面试题 我准备开始学PHP,请大家帮忙! 高手们,快来救火啊! 想请教N人,关于PHP对64位CPU的支持问题,还性能怎么样! php+oracle分页 现在ASP有.NET,PHP有什么和它竞争呢? vbscipt中的vbnewline是什么意思呀,len(vbnewline)又是什么意思呀? 查询PHP函数 简单问题 回车 和 换行有什么区别?
我记得有一个表结构是这样的
id
username //名子
index_id //是否在同一个家
taxis //级别
parent_id //父,没有为0
下面为例:
id username index_id taxis parent_id
1 aa 1 0000 0
2 bb1 1 0001 1
3 bb2 1 0002 1
4 bb3 1 0003 1
5 cc1 1 00010001 2
6 cc2 1 00010002 2
能看明白吗,这个是同一个家的由index_id决定,也就是taxis为0000的,
儿子是2,3,4第二个儿子的儿子是5,6
这样的话一条语句就可以了
select * from table where <条件> order by index_id, taxis
不过你说的aa也有可能是别人的儿子是可以确定的.呵呵~~
1 abc
2 efg abc
3 hij abc
4 kln efg
5 xyz efg
6 xxx abcSELECT *,if(up='',username,up) as pp FROM `test1` order by pp,up
得
id username up pp
1 abc abc
2 efg abc abc
3 hij abc abc
6 xxx abc abc
4 kln efg efg
5 xyz efg efg
如果up字段为空则取username字段内容,可理解为没有父亲的节点的父亲为自己派生出的字段pp为排序用,以便将同一组的记录归在一起不过这个方法只适用于二级,多了时不好弄。
xizi2002(☆☆戏☆子☆☆) 的方法可以,只是给taxis赋值是很麻烦的事情。因为他要罗列全部的父节点按你的数据组织方式,通用点的还是编程
读取全部记录到数组(按up字段排序)
然后用递归函数遍历数组,以生成新数组。按你的数据组织方式,一个儿子只会有一个父亲,一个父亲可能有多个儿子
给出的方法不错,值得学习对于这个问题,最好是先读到数组,再用数组遍历