SQL Server 2005 からの階層データの取得
SQL Server 2005 には使い慣れた CONNECT_BY 句がないため、階層データの取得に課題が生じる可能性があります。一般的なアプローチの 1 つは、階層を横断して目的の出力を構築する再帰共通テーブル式 (CTE) の作成です。
オブジェクトの階層を含む自己参照テーブルの例を考えてみましょう。各子レコードには、列とその親の ID。 CTE を使用すると、階層関係を取得し、各項目のパスを作成できます。
CREATE TABLE tblHierarchy (ID int, ParentID int NULL, Name varchar(128)); INSERT INTO tblHierarchy VALUES (1, NULL, '1'); INSERT INTO tblHierarchy VALUES (2, NULL, '2'); INSERT INTO tblHierarchy VALUES (3, NULL, '3'); INSERT INTO tblHierarchy VALUES (4, 1, '1.1'); INSERT INTO tblHierarchy VALUES (5, 1, '1.2'); INSERT INTO tblHierarchy VALUES (6, 4, '1.1.1'); WITH Parent AS ( SELECT ID, ParentID, Name AS Path FROM tblHierarchy WHERE ParentID IS NULL UNION ALL SELECT TH.ID, TH.ParentID, CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path FROM tblHierarchy TH INNER JOIN Parent ON Parent.ID = TH.ParentID ) SELECT * FROM Parent
OUTPUT:
ID ParentID Path 1 NULL 1 2 NULL 2 3 NULL 3 4 1 1/1.1 5 1 1/1.2 6 4 1/1.1/1.1.1
CTE を利用することで、階層を再帰的に横断して各項目のパスを蓄積し、構造化された方法で目的の階層データを簡単に取得できます。このアプローチは、SQL Server 2005 で階層データを管理およびクエリするための柔軟で効率的なソリューションを提供します。
以上がCONNECT_BY を使用せずに SQL Server 2005 で階層データを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。