Escolar Documentos
Profissional Documentos
Cultura Documentos
Usuários: 76893
Artigos: 226
Dicas: 139
Downloads: 327
07 11 17
Um dos recursos mais interessantes e ainda pouco explorados, introduzido no Firebird 2, são as CTEs (Common Table Expressions).
A sintaxe de uma CTE pode não ajudar, em um primeiro momento, a entendê-la claramente. Mas depois que se acostuma, não fica tão difícil, e os benefícios
que seu uso traz com certeza superam qualquer dificuldade!
1 Rubens null
2 Silvio 1
3 Jose 1
4 Mario 2
5 João 2
6 Ricardo 3
7 Maria 1
Rubens é o todo poderoso. Silvio, José e Maria são subordinados ao Rubens, enquanto que Mario e João são subordinados ao Silvio, e Ricardo é subordinado a
José.
Imagine que precisamos rodar uma query que retorne todas essas pessoas, em uma sequência lógica de chefes e subordinados. Uma das soluções é criar uma
stored procedure selecionável recursiva, mas neste exemplo, vamos facilitar e utilizar uma CTE:
select *
from HIERARQUIA
O resultado:
2 1 Silvio 1
4 2 Mario 2
5 2 João 2
3 1 Jose 1
6 3 Ricardo 2
7 1 Maria 1
Façamos agora uma variante. Imagine que você deseja listar os subordinados somente do Silvio. Para isso, modificamos a CTE da seguinte forma:
select *
from HIERARQUIA
Executando a query e passando como parâmetro para o chefe o código 2 (Sílvio), teremos como resultado:
https://www.firebase.com.br/artigo.php?id=2166 1/2
07/11/2017 Gerando uma lista hierarquica com CTEs
CODIGO CHEFE NOME NIVEL
4 2 Mario 0
5 2 João 0
E se quisermos que seja listado também o chefe deles? Basta modificarmos a CTE mais uma vez:
select *
from HIERARQUIA
Enfim, esta é apenas uma das possibilidades onde as CTEs ajudam a resolver problemas do dia-a-dia!
Para todos que quiserem se aprofundar no assunto, eu recomendo a leitura dos slides da palestra sobre CTE que o Vlad Khorsun (uma das autoridades no
assunto) deu no 6º FDD. O vídeo da palestra faz parte do DVD do sexto FDD e também do MegaPack.
[]s
Comentários
Interessante! Alguém tem um exemplo de utilização com Delphi CRUD com TreeView?
Gostei muito da explicação e do assunto abordado, pois de uma forma simples e didádica podemos apreender mais um recurso da ferramente que não é muito
divulgada. Gradeço a todos vcs.
Interessantíssimo!!!!!
Dorgival [01.05.15]
Ótimo, o exemplo encaixou como uma luva no meu relatório ... Um Abraço.
Copyright (c) Carlos H. Cantu - É proibida a reprodução de qualquer material desse site sem autorização prévia
https://www.firebase.com.br/artigo.php?id=2166 2/2