我有一张像
create table site
(
site_Id int(5),
parent_Id int(5),
site_desc varchar2(100)
);
字段的意义:
- site_Id :网站的 ID
- parent_Id :网站的父 ID
- site_desc :虽然与问题无关,但它有网站的描述
要求是,如果我有一个 site_id 作为输入,并且我需要在站点下方标记的所有 id。例如:
A
/ \
B C
/ | \ /\
D E F G H
/\
I J
所有节点都是 site_Id。
该表包含如下数据:
Site_id | Parent_ID | site_desc
_________|____________|___________
A | -1 |
B | A |
C | A |
D | B |
E | B |
F | B |
I | D |
J | D |
……
A 是 B 和 C 的父级,依此类推。
如果 B 是给定的输入,则查询需要获取 D、E、I、F、J
它目前是通过循环中的多个查询来实现的,但我想用最少的查询来实现这一点。
我目前正在做的是::
否决票
算法是这样的:
Initially create a data set object which you will populate, by fetching data from the data base.
Create a method which takes the parent id as parameter and returns its child nodes if present, and returns -1, if it doesnt have a child.
Step1: Fetch all the rows, which doesn't have a parent(root) node.
Step2: Iterate through this result. For example if prod1 and prod2 are the initial returned nodes, in the resultset.
Iterating this RS we get prod1, and we insert a row in our DataSET obj.
Then we send the id of prod1 to getCHILD method, to get its child, and then again we iterate the returned resultset, and again call the getCHILD method, till we dont get the lowest node.
我需要在我的数据模型约束中使用最佳优化技术。如果您有任何建议,请随时回答。
请提出任何建议。提前致谢。