私はソートの問題に苦しんでいます。MS ACCESS - 階層ツリーの並べ替え
次のように私は、あるテーブルを持っている:私は、次のダミーデータと非環式ツリーを持っている
aspect_id (int)
aspect_text (memo)
root_id (int) which has as a foreign key a aspect_id
:
aspect_id aspect_text root_id
1 root null
2 aspect1 1
3 aspect2 1
4 aspect3 2
5 aspect5 4
例では、データがソートされています正しく、私のデータベースではない。私はそれがルート要素で始まり、子を見つけ出し、その子を出力し、再帰的に行うことを並べ替えたい。
CTEの場合はかなりお手頃です。アクセスはこれをサポートしていません。 CTEを使用すると、次のようになります。
WITH aspectTree (aspect_id, root_id, Level#) AS
(
Select
aspect.aspect_id,
aspect.root_id,
0
FROM aspect
WHERE aspect.aspect_id = 44
UNION ALL
SELECT
aspect.aspect_id,
aspect.root_id,
T.Level# + 1
FROM aspect
INNER JOIN aspectTree AS T
On T.aspect_id = aspect.root_id
)
SELECT * FROM aspectTree;
誰かが私を助けてくれますか?
何dooes略語CTEはどういう意味ですか? –
CTE = SQL-99標準の一部であるCommon Table Expression。SQL Server 2005に導入されました。MSDNの「Common Table Expressions」(http://msdn.microsoft.com/en-us/library/ms190766.aspx)を参照してください。 。 – onedaywhen
どのバージョンのAccessを使用していますか? Access 2010には、階層型データを処理するための新しいフィールド型があります。 –