我只是想找人帮助我。
我有两张桌子:
第一: ID,PARENT_ID,水平
第二: ID,名称
我想按名称更正数据树的排序。当然我可以按(级别,父级,名称)排序,然后获取parent_id关联数组以在递归中打印它。
但是我可以看到,如果我不仅存储级别,而是存储相对级别和绝对级别之间的差值,如果将其排序(delta_level,parent_id,id),我可以在不创建关联数组的情况下获取树。 / p>
当然我们需要ID! id确定date_add字段。但是,如果我需要按名称排序相同的方法呢?
第一个查询我们用自动增量@num:= @num + 1对table2进行排序,之后 - 我需要以某种方式将结果连接到table1。
表1 ID,PARENT_ID,delta_level
table2(按名称ASC排序) ID,名称NUM
我需要在(num
,parent_num
,delta_level
)
有人可以帮忙吗?
第一次编辑:
SET @num1 = 0;
SET @num2 = 0;
SELECT
t2.`name`,
t1.`category_id`,
t1.`path_id`,
t2.`index`,
t3.`index` `parent_index`,
t1.`level` `delta_level`,
t2.`level` `level`
FROM
ht_category_path t1
LEFT JOIN (
SELECT
@num1 := @num1 + 1 `index`,
t1.`category_id`,
t2.`name`,
t3.`level`
FROM
ht_category t1
INNER JOIN
ht_category_description t2 ON t1.category_id = t2.category_id AND t2.language_id = 1
INNER JOIN
ht_category_path t3 ON t3.category_id = t1.category_id AND t3.path_id = t1.category_id
ORDER BY
t2.`name` ASC
) t2 ON t2.category_id = t1.category_id
LEFT JOIN (
SELECT
@num2 := @num2 + 1 `index`,
t1.`category_id`,
t2.`name`
FROM
ht_category t1
INNER JOIN
ht_category_description t2 ON t1.category_id = t2.category_id AND t2.language_id = 1
ORDER BY
t2.`name` ASC
) t3 ON t3.category_id = t1.path_id
WHERE
t1.`level` = 0
ORDER BY
t3.`index` ASC,
t2.`level` ASC,
t2.`index` ASC
鉴于查询工作正常。下一个问题 - 如何优化这些问题?