2011-05-18 19 views
7

Tengo una tabla en SQL Server que contiene categorías y subcategorías. Están conectados por una relación entre ID y PID.SQL Server 2008 R2 - seleccionar datos jerárquicos

Los artículos de nivel superior tienen PID de 0 y otras filas tienen PID de sus padres.

¿Cuál sería la forma más eficiente de obtener estos datos?

El algoritmo ingenuo para esto sería recorrer la lista de padres y luego obtener los elementos secundarios para cada uno de los padres en una consulta diferente (ya sea frente a la base de datos o el conjunto de datos).

¿Hay algún método incorporado en el marco para admitir una mejor forma de hacerlo? Algo que me permita unirme fácilmente a un repetidor (u otro control de datos).

Respuesta

8

Suponiendo al menos SQL Server 2005, utilizaría una única consulta en contra de recursive common table expression.

+0

Lo siento, actualicé el título con la versión de SQL Server. Veré el enlace. ¡Gracias! –

+0

¿Puede indicarme también un buen recurso sobre cómo usar el resultado en C#? ¿Cuál es el control/método recomendado para visualizar los datos? ¿Hay un control existente que permita un enlace simple? \ –

+0

Mi C# está algo oxidado pero lo vinculará a un repetidor igual que cualquier otro resultado de la consulta. –

0

Puede usar Comman Table Expression para obtener los datos jerárquicos en el servidor Sql.

Cuestiones relacionadas