非递归无限分类的,问题,请高手指点下
本帖最后由 vbker 于 2012-09-05 10:19:59 编辑 数据库字段如下,暂时以地区代表栏目,cid为栏目ID,category为栏目名,chain为关系树,rank为栏目排序
mysql> select * from mc_category;
+-----+----------+--------------+------+
| cid | category | chain | rank |
+-----+----------+--------------+------+
| 1 | 国内 | 0_1 | 2 |
| 2 | 国外 | 0_2 | 1 |
| 3 | 华北 | 0_1_3 | 2 |
| 4 | 东北 | 0_1_4 | 1 |
| 5 | 西部 | 0_1_5 | 3 |
| 6 | 河南 | 0_1_3_6 | 1 |
| 7 | 郑州 | 0_1_3_6_7 | 2 |
| 8 | 巩义 | 0_1_3_6_7_8 | 1 |
| 9 | 洛阳 | 0_1_3_6_9 | 1 |
| 10 | 偃师 | 0_1_3_6_9_10 | 1 |
| 11 | 辽宁 | 0_1_4 | 3 |
| 12 | 吉林 | 0_1_4_11_12 | 1 |
| 13 | 上街 | 0_1_3_6_7_13 | 2 |
+-----+----------+--------------+------+
select category,chain from mc_category group by chain order by chain;
[解决办法]
mysql语法不是很精通 ,我一般都是输出全部数据,然后通过组装数组来列出需要的目录树
[解决办法]
select category,chain from mc_category group by chain order by chain,rank
[解决办法]
怎样才能称为同级? chain 相同?
建议你还是贴出建表和插入语句,以方便测试。。
[解决办法]
其实你将表中数据改成
insert into mc_category (cid,category,chain,rank) values这样的,一起都引刃而解了
(1, '国内', '01', 2),
(2, '国外', '02', 1),
(3, '华北', '0103', 2),
(4, '东北', '0104', 1),
(5, '西部', '0105', 3),
(6, '河南', '010306', 1),
(7, '郑州', '01030607', 2),
(8, '巩义', '0103060708', 1),
(9, '洛阳', '01030609', 1),
(10, '偃师', '0103060910', 1),
(11, '辽宁', '010410', 3),
(12, '吉林', '01041112', 1),
(13, '上街', '0103060713', 2)
select category,chain,rank from mc_category order by
rpad(left(chain, 2),$n,'0') desc,
rpad(left(chain, 4),$n,'0') asc,
rpad(left(chain, 6),$n,'0') asc,
length(chain)>6,
rank desc
国外021
国内012
华北01032
河南0103061
郑州010306072
上街01030607132
巩义01030607081
洛阳010306091
偃师01030609101
东北01041
辽宁0104103
吉林010411121
西部01053