3

与えられた自己参照テーブル

Item 
-------------
Id (pk)
ParentId (fk)

関連する値の関連するテーブル

ItemValue
-------------
ItemId (fk)
Amount

そしていくつかのサンプルデータ

Item                       ItemValues 
Id      ParentId           ItemId      Amount
--------------------       ----------------------
1       null               1           10
2       1                  3           40
3       1                  3           20
4       2                  4           10
5       2                  5           30
6       null
7       6
8       7

Item.Id私は、直接の子供たちを連れて帰り、ItemValue.Amounts彼ら、彼らの子供たち、そして彼らの子供たちのために、ツリーのずっと下にあるすべての合計を持って返すためのsprocが必要です。

たとえば、1渡された場合、ツリーは2, 3, 4, 5直接の子に2, 3なり、出力は次のようになります。

 ItemId    Amount
 ------------------
 2         40     (values from ItemIds 4 & 5)
 3         60     (values from ItemId 3)

この動作を実現するには、どのようなアプローチを適用する必要がありますか?

私はCTEの使用を検討していますが、より良い/より速いアプローチがあるかどうか疑問に思っています。

4

3 に答える 3

0

入れ子集合モデルのようにデータを保存できますか(ここにMySQLリファレンスがありますが、アイデアはデータベース全体で一般的です)?もしそうなら、あなたが探している値を見つけるための操作はかなり簡単でしょう。

于 2009-10-23T01:47:48.743 に答える
0

これはデータベースで処理する必要がありますか? 必要なデータを BLL に取り込み、そこで再帰を実行することをお勧めします。

于 2009-10-23T03:46:31.780 に答える