Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta Hierárquica


LuizCarlos

Pergunta

Boa tarde senhores,

Estou com o seguinte problema:

Possuo uma única tabela, chamada produtos, contendo os seguintes campos pr_codigo, pr_pai e pr_descricao.

O conteúdo da tabela é o seguinte:

pr_codigo, pr_descricao, pr_pai

001, COMPUTADOR, 001

002, GABINETE, 001

003, MONITOR, 001

004, FONTE, 001

005, PLACA MAE, 002

006, PLACA DE VIDEO, 005

007, PLACA DE REDE, 005

008, CABO, 004

009, NOTEBOOK, 009

010, MALETA, 009

Preciso de uma consulta que me informe, por exemplo, todos os produtos que fazem parte do COMPUTADOR, código 001, inclusive a PLACA DE VIDEO, código 006 que tem como produto pai o produto PLACA MAE, código 005 que por sua vez tem como pai o produto com código 001.

Alguém já passou por isso ? Há alguma solução com o MySQL ?

Obrigado Pessoal.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi, LuizCarlos

A linha

005, PLACA MAE, 002

de seu exemplo deveria estar como

005, PLACA MAE, 001

para a rotina funcionar, conforme seu relato em

Preciso de uma consulta que me informe, por exemplo, todos os produtos que fazem parte do COMPUTADOR, código 001, inclusive a PLACA DE VIDEO, código 006 que tem como produto pai o produto PLACA MAE, código 005 que por sua vez tem como pai o produto com código 001.

Este tipo de pesquisa é conhecido como explosão de materiais e é feito da seguinte maneira, conforme a tabela que você apresentou.

SELECT * 
FROM Tabela1 WHERE pr_pai IN (SELECT Tabela1.pr_codigo
                           FROM Tabela1 WHERE Tabela1.pr_pai = 1);

Neste caso a constante 1 em "WHERE Tabela1.pr_pai = 1" pode ser uma variável e representa o atributo pr_codigo onde este é igual ao atributo pr_pai. Ou seja, aquele que dá origem a pesquisa. "No seu caso (computador)".

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...