2011-05-18 147 views
7

我在SQL Server中有一個包含類別和子類別的表。它們通過IDPID之間的關係連接。SQL Server 2008 R2 - 選擇分層數據

頂級項目有一個PID爲0,其他行有他們父母的PID

什麼是最有效的方式來獲取這些數據?

對此的樸素算法將循環遍歷父表,然後在不同的查詢(針對數據庫或數據集)中獲取每個父表的子對象。

是否有任何內置到框架的方法來支持更好的方法?一些可以讓我輕鬆綁定到中繼器(或其他數據控制)的東西。

回答

8

假設至少SQL Server 2005我會對recursive common table expression使用單個查詢。

+0

對不起,使用SQL Server版本更新了標題。我會查看鏈接。謝謝! – 2011-05-18 11:32:24

+0

你也可以請我指出一個很好的資源在C#中使用結果?推薦的顯示數據的控件/方法是什麼?是否有一個允許簡單綁定的現有控件?\ – 2011-05-18 11:35:57

+0

我的C#有點生疏,但您只需將它綁定到與其他查詢結果相同的中繼器即可。 – 2011-05-18 11:38:56

0

您可以使用Comman Table Expression來獲取Sql Server中的分層數據。