これはこのフォーラムでの最初の質問なので、明確にしておきます。
entity
次のデータを含む1つのテーブルがあります。
ATTR1 ATTR2 ATTR3 ATTR4
A Level 1 null 35
B Level 2 A 34
C Level 2 A 33
D Level 3 B 32
E Level 3 B 31
F Level 3 C 30
G Level 3 C 29
H Level 4 D 28
I Level 4 D 27
J Level 4 E 26
K Level 4 E 25
L Level 4 F 24
M Level 4 F 23
N Level 4 G 22
O Level 4 G 21
P Level 5 H 20
Q Level 5 H 19
R Level 5 H 18
S Level 5 O 17
ATTR1
ノードの名前はどこにありますか。これは主キーでもあります。ノードのレベルは
どこですか。
ノードの親ノードの名前です。はルートであり、親ノードがないため、. ノードのコストは
どこにありますか。ATTR2
ATTR3
A
NULL
ATTR4
今質問:
- 任意の部分 X とリーフ ノード Y (つまり、Y は X の子孫) が与えられた場合、ルートから X への、または X から Y への直接の子孫への最もコストのかかるパスはどれですか?
つまり、X ノードがD
で、Y ノードが であるとしましょうP
。ノードからルートへのパスは になりD-B-A
ますが、リーフからノードへのパスは になりますP-H-D
。
各パスの合計コストをどのように計算し、どちらがより高価であるかを判断するにはどうすればよいでしょうか?
私のアプローチは、2 つの再帰クエリを実行し、パスごとに 1 つのクエリを実行して、それぞれの SUM を見つけることでした。問題は、2 つのテーブルを作成し、それらのすべてのデータを 1 つにまとめることを余儀なくされたことです。
できればPostgreSQL構文で、どんな助けでも大歓迎です。