[mysql]SQL检索树数据,但顺序不同

[mysql]SQL检索树数据,但顺序不同,mysql,tree,Mysql,Tree,这是我需要表达的IA。(树模型) 这是我需要制作的HTML DOM。正如您所看到的,depth2和depth3(最多5或6个)处于相同的DOM级别,而depth1将它们作为子级。(我必须这样做,因为CSS) 我尝试按级别排序,但结果不正确。(顺序应与HTML DOM顺序相同) 我怎样才能订购与HTML相同的订单 最难的部分是depth2或depth3在其父级(depth1)之下(作为一个组) 我做了一个jQuery代码来解决我的问题。但我不能应用jQuery,因为实际数据太大(几百个),重新排列

这是我需要表达的IA。(树模型)

这是我需要制作的HTML DOM。正如您所看到的,
depth2
depth3
(最多5或6个)处于相同的DOM级别,而depth1将它们作为子级。(我必须这样做,因为CSS)

我尝试按级别排序,但结果不正确。(顺序应与HTML DOM顺序相同)

我怎样才能订购与HTML相同的订单

最难的部分是
depth2
depth3
在其父级(depth1)之下(作为一个组)

我做了一个
jQuery
代码来解决我的问题。但我不能应用
jQuery
,因为实际数据太大(几百个),重新排列HTML元素需要一些恼人的时间。我不能给客户方增加负担

我搜索了一下怎么做。但是我必须考虑用户禁用的JavaScript。< /P>
请分享您的不同观点或新想法,甚至技巧。(express语言是JSP)谢谢。

正如您所看到的,可以通过一个简单的查询从数据库中提取数据,然后编写用该数据填充树结构的代码

我不知道你为什么认为唯一的选择是在过程的最末端——数据库和表示层

<>你不说你在中间层使用什么编程语言——我猜它不是JQuery的JavaScript。不管是什么,执行数据库查询的中间层服务器端语言肯定比客户端javascript更适合创建树结构

如果出于某种原因确实必须在数据库中执行此操作,我建议使用存储过程


还请注意,出于此目的,其他一些数据库具有分层查询语法(如Oracle的“CONNECT BY”)。

如果必须使用MySQL而无法更改表结构,则可以使用存储过程生成结果。MySQL不能运行递归查询,因为其他一些RDBMS可以运行。事实上,我从某处得到了一个存储过程。但是我不能修改它。我按照你的建议用编程语言解决这个问题。非常感谢。
about us
    company
        history
        location
    ceo
product
    mobile
        iphone
        galaxy 3
<div class="depth1"><span>about us</span>

    <div class="depth2">company</div>   
    <div class="depth2">ceo</div><!--CEO is here! not below "location" -->

    <div class="depth3">history</div>   
    <div class="depth3">location</div>

</div>


<div class="depth1"><span>product</span>

    <div class="depth2">mobile</div>

    <div class="depth3">iphone</div>    
    <div class="depth3">galaxy 3</div>

</div>
id(pk)  p_id    level   order   name
------------------------------------------
1       root        0       0       -
2       1       1       100     about us
3       7       2       100     mobile
4       5       3       200     location
5       2       2       100     company
6       5       3       100     history
7       1       1       200     product
8       3       3       100     iphone
9       3       3       200     galaxy
10      2       2       200     ceo
id(pk)  p_id    level   order   name
------------------------------------------
1       root        0       0       -
2       1       1       100     about us
7       1       1       200     product
3       7       2       100     mobile
5       2       2       100     company
10      2       2       200     ceo
8       3       3       100     iphone
6       5       3       100     history
4       5       3       200     location
9       3       3       200     galaxy
id(pk)  p_id    level   order   name
------------------------------------------
1       root        0       0       -
2       1       1       100     about us
5       2       2       100     company
10      2       2       200     ceo
6       5       3       100     history
4       5       3       200     location
7       1       1       200     product
3       7       2       100     mobile
8       3       3       100     iphone
9       3       3       200     galaxy 3