Resumo: neste tutorial, você vai aprender sobre o PostgreSQL consulta recursiva recursiva usando expressões de tabela comuns ou CTEs.
Introduction to the PostgreSQL recursive query
PostgreSQL provides the WITH
statement that allows you to construct auxiliary statements for use in a query.
estas declarações são muitas vezes referidas como expressões de tabela comuns ou Eti. Os CTEs são como tabelas temporárias que existem apenas durante a execução da consulta.
uma consulta recursiva é uma consulta que se refere a um CTE recursivo. As consultas recursivas são úteis em muitas situações, tais como questionar dados hierárquicos como estrutura organizacional, lista de materiais, etc.
o seguinte ilustra a sintaxe de um CTE recursivo:
Code language: SQL (Structured Query Language) (sql)
um CTE recursivo tem três elementos:
- termo não-recursivo: o termo não-recursivo é uma definição de consulta CTE que forma o conjunto de resultados base da estrutura CTE.Termo recursivo: o termo recursivo é uma ou mais definições de consulta CTE unidas com o termo não recursivo usando a União ou operador
UNION ALL
. O termo recursivo referencia o próprio nome CTE. - verificação da terminação: a recursão pára quando nenhuma linha é devolvida da iteração anterior.
PostgreSQL executa uma ETI recursiva na sequência seguinte::
- Execute o termo não-recursivo para criar o conjunto de resultados base (R0).
- executar um termo recursivo com Ri como uma entrada para retornar o conjunto de resultados Ri+1 como a saída.
- repetir o PASSO 2 até um conjunto vazio ser devolvido. (termination check)
- Return the final result set that is a UNION or
UNION ALL
of the result set R0, R1, … Rn
PostgreSQL recursive query example
we will create a new table to demonstrate the PostgreSQL recursive query.
Code language: SQL (Structured Query Language) (sql)
a tabela employees
tem três colunas: employee_id
, manager_id
, e full_name
. A coluna manager_id
especifica o ID de gerente de um empregado.
a seguinte declaração insere os dados da amostra na tabela employees
.
Code language: PHP (php)
a seguinte consulta devolve todos os subordinados do Gestor com o id 2.1873 8126 5877 como funciona:
- o CTE recursivo, subordinado, define um termo não-recursivo e um termo recursivo.
- o termo não-recursivo retorna o conjunto de resultados base R0 que é o empregado com o id 2.
Code language: SQL (Structured Query Language) (sql)
o termo recursivo devolve o(s) subordinado (s) directo (s) do ID 2 do empregado. Este é o resultado da união entre a tabela de funcionários e os subordinados CTE. A primeira iteração do termo recursivo devolve o seguinte conjunto de resultados:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL executa o termo recursivo repetidamente. A segunda iteração do membro recursivo usa o conjunto de resultados acima etapa como o valor de entrada, e retorna este conjunto de resultados:
Code language: SQL (Structured Query Language) (sql)
A terceira iteração retorna um conjunto de resultado vazio porque não há nenhuma notificação do empregado, ao trabalhador, com a identificação de 16, 17, 18, 19 e 20.
PostgreSQL retorna o conjunto de resultados final que é a união de todos os conjuntos de resultados na primeira e segunda iterações geradas pelos termos não-recursivos e recursivos.
neste tutorial, você aprendeu a usar o Eti recursivo para construir as consultas recursivas pós-Gresql.
- este tutorial foi útil ?
- YesNo