SQL Server 2008 R2 - выберите иерархические данные - PullRequest
7 голосов
/ 18 мая 2011

У меня есть таблица в SQL Server, которая содержит категории и подкатегории. Они связаны отношением между ID и PID.

Элементы верхнего уровня имеют PID из 0, а другие строки имеют PID своих родителей.

Какой самый эффективный способ получить эти данные?

Наивным алгоритмом для этого будет цикл по списку родителей, а затем получение дочерних элементов для каждого родителя в отдельном запросе (либо к базе данных, либо к набору данных).

Существуют ли какие-либо методы, встроенные в платформу для поддержки лучшего способа сделать это? Что-то, что позволит мне легко привязаться к повторителю (или другому элементу управления данными).

Ответы [ 2 ]

8 голосов
/ 18 мая 2011

Предполагая, что хотя бы в SQL Server 2005 я бы использовал один запрос к рекурсивному общему табличному выражению .

0 голосов
/ 18 мая 2011

Вы можете использовать Comman Table Expression для получения иерархических данных в Sql Server.

...