Inquiridor
Hierarquia de pedido, pedido pai e pedido filho.

Pergunta
-
Pessoal, estou precisando fazer uma query, onde eu tenho uma tabela de pedido que tem o idPedido e o IdPedidoPai
Preciso fazer um query onde passo o idPedido e ele me traz o primeiro idPedidoPai, ou seja ele vai no topo da hierar quia e me traz o pai que gerou todos os pedido da hierarquia de pedidos.
por exemplo:
O idpedido = 10 gerou o idPedido 11 que gerou o idPedido 12 que gerou o idPedido 13 que gerou o IdPedido 14 etc.
se eu passar o idPedido 15 por exemplo ele tem que me trazer o idPedido 10
Como faço esse esquema de hierarquia?
Tarcísio Corte tarcisiocorte@gmail.com
Todas as Respostas
-
Bom Dia,
Informe o SQL Server utilizado, pois, os recursos podem variar de versão para versão.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível -
-
-
Boa Noite,
Segue uma implementação com o uso das CTEs.
CREATE TABLE #IDS (IDFilho INT, IDPai INT) -- Primeira dependência (1 -> 2 -> 3 -> 4 -> 6) INSERT INTO #IDS VALUES (1,NULL) INSERT INTO #IDS VALUES (2,1) INSERT INTO #IDS VALUES (3,2) INSERT INTO #IDS VALUES (4,3) INSERT INTO #IDS VALUES (6,5) -- Segunda dependência (10 -> 11 -> 13 -> 17) INSERT INTO #IDS VALUES (10,NULL) INSERT INTO #IDS VALUES (11,10) INSERT INTO #IDS VALUES (13,11) INSERT INTO #IDS VALUES (17,13) ;WITH Res (IDFilho, IDPai, IDAncestral) As ( SELECT IDFilho, IDPai, CASE WHEN IDPai IS NULL THEN IDFilho ELSE IDPai END FROM #IDS WHERE IDPai IS NULL UNION ALL SELECT #IDS.IDFilho, #IDS.IDPai, Res.IDAncestral FROM #IDS INNER JOIN Res ON #IDS.IDPai = Res.IDFilho) SELECT * FROM Res
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar sábado, 16 de abril de 2011 04:19
-
Boa noite, segue outro exemplo.
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino -
Gustova, é basicamente isso que eu preciso.
Mas como eu faço para fazer uma query que eu passe como parametro 17, por exemplo e ela me traga o primeiro pai da hierarquia, ou seja o ID que gerou outro id até chegar no 17, no caso do exemplo abaixo é o 9?
9 Gerou o filho 10, que gerou o filho 11 que gerou o filho 13 que gerou o filho 17.
idFilho idPai
1 NULL
10 9
11 10
13 11
17 13
2 1
3 2
4 3
Tarcísio Corte tarcisiocorte@gmail.com -
Boa Noite,
Até posso pensar em algo, mas me parece que seus dados tem uma particularidade. Se o ID10 é filho do ID9 onde está o registro do ID9 ? Não teríamos que ter um ID9 com um IPPai nulo a exemplo do ID1 ?
Se tivermos esse registro então conseguiríamos utilizar minha primeira sugestão.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível