Considerando que temos uma tabela com registros que representam as áreas do site, organizados de forma hierárquica e uma área pode ser filha de outra área, teremos algo como:
AreaID | AreaPaiID | Titulo |
---|---|---|
1 | NULL | Blog |
2 | NULL | Site |
3 | 1 | Desenvolvimento |
4 | 3 | ASP.NET |
A questão é:
Como fazer para exibir o caminho completo do registro da área 4 (/Blog/Desenvolvimento/ASP.NET) quando o registro for retornado do banco de dados?
Um sugestão para resolver esse problema, é criar uma fuction recursiva que obtém o caminho de cada área e adicionar a chamada à essa function em um campo calculado na tabela.
O código da function é o seguinte:
Dica: Dá para alterar essa function para fazer esse select recursivo utilizando o comando WITH
E adicione uma coluna calculada na tabela, chamando essa function:
Agora, ao selecionar os registros da tabela:
Na nova coluna, é exibido o caminho de cada área:
AreaID | AreaPaiID | Titulo | CaminhoCompleto |
---|---|---|---|
1 | NULL | Blog | Blog |
2 | NULL | Site | Site |
3 | 1 | Desenvolvimento | Blog/Desenvolvimento |
4 | 3 | ASP.NET | Blog/Desenvolvimento/ASP.NET |