私は次のようなテーブルを持っています
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.
データモデルの制約内で最適化された最適な手法が必要です。何か提案があれば、遠慮なく答えてください。
何か提案してください。前もって感謝します。