1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Auto relacionamento em PostgreSQL

Ola, estou com um problema numa tabela com auto relacionamento. Gostaria de selecionar apenas os nós folha. Segue um exemplo de minha tabela:

       Categoria

id  |  descricao   |id_pai
1   |  pai         |  
2   |  automoveis  |  1
3   |  fiat        |  2
4   |  ford        |  2
5   |  uno         |  3
6   |  siena       |  3
7   |  fiesta      |  4
8   |  focus       |  4

Estou tentando fazer um SQL onde, se a categoria for automoveis(id=2) o resultado seja:

5   |  uno         |  3
6   |  siena       |  3
7   |  fiesta      |  4
8   |  focus       |  4

E caso a categoria for fiat (id=3), o resultado seja:

5   |  uno         |  3
6   |  siena       |  3

O mais proximo que cheguei foi este SQL:

with recursive categoria_tree as (
    select id, id_pai, nome from categoria where id = 2
    union all 
        select t.id, t.id_pai,t.nome from categoria t join categoria_tree p on t.id_pai = p.id where t.id in ( select c.id_pai from categoria c) ) 
select id, id_pai, nome from categoria_tree

Porem, os resultados mostram todos os filhos, e nao apenas os nos folha. Alguem pode me ajudar?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sql ou faça a sua própria pergunta.