Drandrão Posted December 21, 2011 Report Share Posted December 21, 2011 Estou com o seguinte problema....tenho uma tabela desse tipo:PAI | FILHO | NOME001 002 Teste001 003 Teste1001 001 Teste2010 001 Teste3015 015 Teste4002 005 Teste5 Aí gostaria de dar um select, passando o pai '010' e obter por exemplo os filhos teste, teste1 e teste2. E assim por diante, por exemplo se o teste2 tivesse filho, ele mostraria tbém....Achei algumas buscas feitas más não consegui adaptar... Desde já agradeço a ajudaEvandro Quote Link to comment Share on other sites More sharing options...
0 Drandrão Posted December 21, 2011 Author Report Share Posted December 21, 2011 Estou com o seguinte problema....tenho uma tabela desse tipo:PAI | FILHO | NOME001 002 Teste001 003 Teste1001 001 Teste2010 001 Teste3015 015 Teste4002 005 Teste5 Aí gostaria de dar um select, passando o pai '010' e obter por exemplo os filhos teste, teste1 e teste2. E assim por diante, por exemplo se o teste2 tivesse filho, ele mostraria tbém....Achei algumas buscas feitas más não consegui adaptar... Desde já agradeço a ajudaEvandroFiz da seguinte formaWITH ConsultaRecursiva AS (SELECT Pai.PAI, Pai.FILHO, Pai.NOMEFROM TABELA PaiWHERE (Pai.PAI = '001')UNION ALLSELECT C.FILHO, C.PAI, C.NOMEFROM TABELA CINNER JOIN ConsultaRecursiva CR ON (CR.FILHO = C.PAI))SELECT * FROM ConsultaRecursiva OPTION (maxrecursion 32767) Más dá o seguinte erro:The statement terminated. The maximum recursion 32767 has been exhausted before statement completion(1,671 sec) Alguém sabe o que pode ser??? ObrigadoEvandro Quote Link to comment Share on other sites More sharing options...
0 Abel Bueno Posted March 7, 2012 Report Share Posted March 7, 2012 Provavelmente porque em Teste 2 e Teste 5 pai e filho têm o mesmo código.Qual é a chave primária dessa tabela ?Não tem sentido 1 filho ter dois pais. (Como Teste 2 e Teste 3) Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted March 7, 2012 Report Share Posted March 7, 2012 Bom dia Drandrão, O erro está ocorrendo porque o sql está entrando em uma recursividade infinita. Se quiser trazer os resultados navegando em uma árvore, terá que utilizar um loop. Quote Link to comment Share on other sites More sharing options...
Question
Drandrão
Estou com o seguinte problema....
tenho uma tabela desse tipo:
PAI | FILHO | NOME
001 002 Teste
001 003 Teste1
001 001 Teste2
010 001 Teste3
015 015 Teste4
002 005 Teste5
Aí gostaria de dar um select, passando o pai '010' e obter por exemplo os filhos teste, teste1 e teste2. E assim por diante, por exemplo se o teste2 tivesse filho, ele mostraria tbém....
Achei algumas buscas feitas más não consegui adaptar...
Desde já agradeço a ajuda
Evandro
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.