加载子sql创建树的最佳方法是什么?

时间:2017-11-01 17:45:27

标签: java mysql sql

从sql server加载数据以在java中创建类似树的最佳方法是什么。

我有

+----+--------+-------+
| ID | Parent | Title |
+----+--------+-------+
| 1  | NULL   | First |
| 2  | 1      | AAAAA |
| 3  | 1      | BBBBB |
| 4  | 2      | CCCCC |
+----+--------+-------+

我想加载对象(如id为1的对象).getChild()。getChild()。getTitle()返回CCCCC

我是否必须遍历sql结果并再次加载孩子?还是有最好的方法?感谢

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是在MySQL中创建一个视图,该视图可以返回在Parent = ID上连接到自身的原始表的表,其中相应的ID作为新的子列。 你可以根据需要多次调用这样的视图来遍历子链接并获得标题

对于您给出的示例:

Given the view
   Children
+----+-------+
| ID | CHILD |
+----+-------+
| 1  | 2     |
| 1  | 3     |
| 2  | 4     |
+----+-------+

Select OT.Title
From OriginalTable AS OT
     INNER JOIN Children AS CID on OT.ID = CID.ID
     INNER JOIN Children AS C1 on CID.CHILD = C1.ID
     INNER JOIN Children AS C2 on C2.CHILD = C2.ID
WHERE OT.ID = 1

这将返回所有标题,这些标题是ID为1的元素的子元素。

您可以将其抽象为以ID作为参数的存储过程,或重复内部联接以到达第N个子项。