Teste seu SQL na WEB com SQL Fiddle

Muitas vezes você gostaria de rapidamente testar seu SQL mas não possui um ambiente disponível para isto, há também aqueles momentos em que você precisa de uma ajuda e quer mostrar um exemplo minimo de como é a consulta que você está executando, os resultados que ela retornam e qual a estrutura dos dados. Neste episódio demonstro um utilitário on-line de execução de consultas, o SQL Fiddle.

 

Mais informações:

Comandos:

create table pessoas (
  cpf numeric,
  nome varchar,
  data_nascimento date,
  constraint pk_pessoas primary key(cpf)
);

insert into pessoas
values
(111111111111,'JOAO DA SILVA','1980-01-10'),
(222222222222,'CHICO DOS SANTOS','1950-04-04'),
(333333333333,'EDITH J. S.','1970-10-20'),
(444444444444,'MARIA ANTONIA','1970-10-20')
;

select * from pessoas;

create table dependentes (
  cpf_responsavel numeric references pessoas(cpf),
  cpf_dependente  numeric references pessoas(cpf),
  constraint pk_depentendentes primary key (
    cpf_responsavel, cpf_dependente
  )
);

insert into dependentes
values
(111111111111,222222222222),
(111111111111,444444444444),
(222222222222,333333333333);

create temp table familia as
select
   coalesce(cpf_dependente, dependente.cpf) as cpf_dependente,
   dependente.nome  as nome_dependente,
   responsavel.nome as nome_resposavel,
   cpf_responsavel
from dependentes
right join pessoas responsavel on (cpf_responsavel = responsavel.cpf)
right join pessoas dependente  on (cpf_dependente  = dependente.cpf)
;

with recursive parentesco as (
  select f, 0 as level, array[cpf_dependente] as aux
  from familia f
  where cpf_responsavel is null
  union all
  select f1, level+1 as level, aux || cpf_dependente
  from parentesco
  join familia f1 on f1.cpf_responsavel = (parentesco.f).cpf_dependente
),
hierarquia as (
 select level, (parentesco.f).* from parentesco
)
select
   repeat('..', level) || cpf_dependente as cpf,
   nome_dependente
from hierarquia;
blog comments powered by Disqus