0

テーブルの生データは、次のように、ID 列と 1 または 0 の「IsFolder」列で構成されます。

ID    IsFolder
1     1
2     0
3     0
4     1
5     0
6     0
7     0
8     0
9     0
10    0
11    1
12    0
13    0
14    0
15    1
16    0
17    0

コードがこれを解釈する方法は、行に 'IsFolder' の 1 がある場合、それはフォルダーであり、その下のすべてのタスク (次のフォルダーに到達するまで) はそのフォルダーの子であるということです。

私がしたいのは、フォルダー以外のすべてのタスクの親フォルダーの ID を返すだけの Select ステートメントです。次のようなものです:

ID    ParentFolder
2     1
3     1
5     4
6     4
7     4
8     4
9     4
10    4
12    11
13    11
14    11
16    15
17    15

私は MS SQL Server Management Studio 2005 を使用しています。これは、カーソルの使用に精通している (私はそうではありません) 人にとっては簡単な答えだと思います。他の方法は考えられませんが、他の誰かができるかもしれません。とにかく、何か間違ったことをした場合は申し訳ありませんが、これが私の最初の投稿です。

4

2 に答える 2

1

データの構造が少し変更された場合、このタスクがはるかに簡単になり、全体的な設計がより拡張可能になることを指摘したいと思います。たとえば、タスクをフォルダ 4 に追加するにはどうすればよいでしょうか? 親子関係が 2 つの異なるテーブルに抽出された場合、役立つ可能性があります。

于 2013-09-09T22:15:45.027 に答える